2012-01-11 9 views
5

Ho un servizio con WCF in un'applicazione WPF (self-hosted) e ho l'errore tipico "Il tuo processo non ha diritti di accesso a questo spazio dei nomi". Gli utenti non possono avere privilegi di amministratore, quindi usare un .manifest non è una soluzione. Le porte sono dinamiche, l'applicazione calcola una porta libera ogni volta che è in esecuzione, quindi l'applicazione deve inserire la porta di ascolto di netsh più volte Io uso un ProcessStartInfo con l'amministratore di dominio, ma per avviare il processo l'utente ha bisogno dei privilegi di amministratore. Eseguire l'applicazione come amministratore non è una soluzione, quindi ho bisogno che un utente normale possa eseguire l'applicazione e il programma aggiunga la porta tramite netsh come amministratore di dominio.Aggiungere porte con netsh in WCF come amministratore di dominio senza privilegi di amministratore

Il mio processo è qualcosa di simile:

ProcessStartInfo psi = new ProcessStartInfo("netsh", parameter); 
     SecureString ss = new SecureString(); 

      for (int i = 0; i < adminPass.Length; i++) 
       ss.AppendChar(adminPass[i]); 

      psi.Password = ss; 
      psi.UserName = Admin; 
      psi.Domain = Domain; 
      psi.Verb = "runas"; 
      psi.RedirectStandardOutput = false; 
      psi.CreateNoWindow = true; 
      psi.WindowStyle = ProcessWindowStyle.Hidden; 
      psi.UseShellExecute = false; 
      Process.Start(psi); 

Grazie mille

risposta

1

dare un'occhiata alla risposta accettata per questo Stack Overflow question per una possibile soluzione al vostro problema. L'approccio delineato nella risposta è quello di estrapolare il codice che richiede l'amministrazione in un servizio Windows che esegue le operazioni con privilegi elevati in un account appropriato (separato) quando viene richiamato.