come effettuo la ricerca su uno dei campi ?
Hai in mano un'arrayList popolato con le tue strutture, quindi se devi trovare la password per un programma non puoi fare altro che usare un ciclo For..next, esempio:

codice:
 Function Find(ByVal programma As String, ByVal lista As ArrayList) As PWD
        Dim mystruc As PWD
       For i As Integer = 0 To lista.Count - 1
            mystruc = CType(lista(i), PWD)
            If mystruc.Programma = programma Then Return mystruc
        Next
    End Function
in questo modo hai la struttura con il nome del programma chiamato:

codice:
Dim mystruc As PWD = Find("mioProgramma2", lista)

Il problema della sicurezza rimane comunque anche nel caso che ti ho proposto, bisogna dire che le password e le Username NON sono in chiaro ma il problema rimane, se prende in mano il file qualcuno che capisce qualcosa di programmazione (e di serializzazione degli oggetti), capisce subito che si tratta di una serializzazione di un'Arralist e a quel punto potrebbe deserializzare e ricavarne le strutture.