Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problea Shell
Forum - C# / VB.NET - Problea Shell

Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2297
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:49
Venerdì, 30/05/2008
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

Codice sorgente - presumibilmente Plain Text

  1. shell("C:\test.exe")



e nella Task di win appare

TEST.EXE     System



https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:41
Venerdì, 30/05/2008
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:
Codice sorgente - presumibilmente VB.NET

  1. Dim User As String = "Administrator"
  2. Dim Password As SecureString
  3. Dim Domain As String = Nothing
  4. Dim FileName As String = "notepad.exe"
  5.  
  6. System.Diagnostics.Process.Start( _
  7.   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:
Codice sorgente - presumibilmente VB.NET

  1. Function ToSecureString(ByVal S As String) As SecureString
  2. Dim Result As New SecureString
  3.  
  4. For Each C As Char In S
  5.   Result.AppendChar(C)
  6. Next
  7.  
  8. Return Result
  9. End Function


PM Quote