Ho un programma che esegue Elevato. Da questo programma avvio altri eseguibili.Accesso all'unità mappata quando si esegue come utente
Ora, per impostazione predefinita, qualsiasi processo che creo verrà eseguito Elevato. Quindi, per alcuni programmi eseguiti, desidero che vengano eseguiti come se non fossero elevati, come utente standard che ha effettuato l'accesso.
Il programma principale elevato viene eseguito con l'account utente dell'utente connesso.
Quindi questo è quello che ho provato
var psi = new ProcessStartInfo(Exe.GetExePath());
psi.UseShellExecute = false;
psi.RedirectStandardError = false;
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = false;
psi.WorkingDirectory = Exe.Version.GetInstallPath();
if(Exe.Elevated == false)
{
psi.UserName = Global.Username;
var pass = new SecureString();
Global.Password.ToCharArray().ToList().ForEach(p => pass.AppendChar(p));
psi.Password = pass;
}
Process = Process.Start(psi);
che funziona, come nel programma avviato non è elevato. Tuttavia, a quel punto perde l'accesso a tutte le unità di rete mappate per qualche strana ragione.
Ho anche provato a fare qualcosa di simile a questo Impersonating a Windows user dall'interno dell'applicazione che si avvia, e anche questo non funziona.
Quindi penso che mi stia chiedendo, come posso ottenere l'accesso di ritorno a queste unità mappate (tutte le applicazioni sono in esecuzione con l'utente corretto).
Il tuo programma principale elevato è un servizio di Windows ? –
No, mi dispiace, come ho già detto entrambi i programmi sono in esecuzione come utente che ha effettuato l'accesso. Solo il programma è elevato. –
Quando si esegue "net use" come utente con privilegi elevati, cosa viene restituito? – AutomationNation