Hallo,
wenn ich das richtig sehe, läuft Dein Index I bis
UserListe.Items.Count -1,
mit diesem Index greifst Du aber auf die Liste SL zu. In Deinem Codebeispiel hat SL überhaupt keine Einträge, damit kommst Du automatisch out of bounds.
Ich weiß jetzt nicht, was die UserListe genau ist, wenn ich mal annehme, daß die einzelnen Einträge in UserListe.Items stehen, sollte es so gehen:
for I := 0 to UserListe.Items.Count -1 do
ShellExecute(
Handle, nil, 'c:\windows\system32\net.exe',
PChar('send ' + UserListe.Items[I] + ' ' + Parameter1.Text),
nil, SW_HIDE);
Viele Grüße