Oppure

Loading
30/05/08 12:49
Thejuster
Ciao totem.

Ultimamente sto riscontrando enomri problemi con le shell il medoto per avviare applicazioni esterne.

Ho un semplice problema ma che mi turba da un bel pò
e non riesco a risolverlo.

spiego.

Il mio soft, tramide autentificazione ecc. ecc.
permette di avviare altre applicazioni in vari punti del computer ( server ) dove sono hostati vari server di gioco.

il problema e semplice

ogni programma utilizza un database sql
quindi se viene avviato dal mio programma
lo avvia come utente SYSTEM invece di avviarlo com e amministratore del computer.

e quindi il server di gioco che viene aperto tramide shell non funziona perche non hai i credianziali per accedere ai vari database sql.

cmq a breve parlando
come posso fare in modo che mi avvi gl'altri programmi sempre con l'user del computer?
e non come processo di sistema?

esempio


shell("C:\test.exe")



e nella Task di win appare

TEST.EXE System

mire.forumfree.it/ - Mire Engine
C# UI Designer
30/05/08 16:41
Il Totem
Se vuoi usare un utente differente non puoi più servirti di Shell, ma devi passare al più corretto e più funzionale Process. In particolare devi impostare la proprietà StartInfo, in questo modo:
Dim User As String = "Administrator"
Dim Password As SecureString
Dim Domain As String = Nothing
Dim FileName As String = "notepad.exe"

System.Diagnostics.Process.Start( _ 
  FileName, User, Password, Domain)

Attenzione che Password è un ogetto SecurePassword e in quanto tale non espone costruttori con parametri, né metodi che convertano una stringa in un ogetto SecureString (in modo da non lasciare tracce in memoria). Infatti l'unica operazione che puoi fare con SecureString è aggiungere un carattere alla volta con AppendChar. Puoi usare questa funzione:
Function ToSecureString(ByVal S As String) As SecureString
Dim Result As New SecureString

For Each C As Char In S
  Result.AppendChar(C)
Next

Return Result
End Function
aaa