"Esegui come ..." non crea correttamente l'ambiente utente
-
03-07-2019 - |
Domanda
La mia applicazione C # si arresta in modo anomalo in alcune circostanze quando viene eseguita con un utente non amministratore.
Riscontro un problema con Windows Server 2003 e sto cercando di trovare ulteriori informazioni a riguardo. Potrebbe essere un problema su altri sistemi operativi Windows.
Sembra che se creo un utente non amministratore e quindi eseguo la mia applicazione sotto questo utente con il comando 'Esegui come ...', l'ambiente degli utenti non viene impostato correttamente e la variabile di ambiente TEMP punta a C: \ Windows \ Temp invece che gli utenti abbiano la propria cartella Temp nel profilo Documents and Settings. L'utente non dispone delle autorizzazioni per questa cartella, quindi l'applicazione si arresta in modo anomalo con il compilatore .Net JIT tenta di scrivere / leggere in questa cartella.
Se accedo come questo utente, la situazione è ancora sbagliata. Non riesco a prepararmi per l'ambiente che normalmente si ottiene quando si accede a un nuovo utente e la mia app non funzionerà ancora senza crash durante l'avvio. Infatti ho capito che l'utente non può eseguire calc.exe o altri programmi nella cartella Windows. Sembra che il loro ambiente sia permanentemente incasinato e credo che l'unico modo per procedere sia quello di eliminare il loro profilo.
Se creo un utente non amministratore e accedo come loro prima di eseguire un 'Esegui come ..', l'ambiente viene impostato correttamente e la mia applicazione funziona.
Non riesco a trovare informazioni su questo problema o note sul riconoscimento da parte di Microsoft. Hai provato questo o sai dove posso cercare per saperne di più?
Soluzione
Se non lo sei, considera l'utilizzo di runas con un profilo per l'utente.
C: \ temp > runas RUNAS USAGE:
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ] /user: program RUNAS [ [/noprofile | /profile] [/env] [/netonly] ] /smartcard [/user:] program/ noprofile lo specifica il profilo dell'utente non dovrebbe essere caricato. Ciò causa il caricamento più rapido dell'applicazione, ma può causare il malfunzionamento di alcune applicazioni.
/ profilo specifica che il profilo dell'utente deve essere caricato. Questo è il valore predefinito. / env da usare ambiente corrente anziché utente. / netonly usa se il le credenziali specificate sono per il telecomando solo accesso. / salvato per utilizzare le credenziali precedentemente salvato dall'utente. Questa opzione non è disponibile su Windows XP Home Edizione e sarà ignorato. / smartcard usa if le credenziali devono essere fornite da un Smart card. / utente dovrebbe essere nel formato USER @ DOMAIN o DOMAIN \ USER
riga di comando del programma per EXE. Vedi sotto per esempiEsempi:
runas / noprofile / user: mymachine \ administrator cmd
runas / profile / env / user: mydomain \ admin " mmc% windir% \ system32 \ dsa.msc "
runas / env /user:user@domain.microsoft.com " notepad \ " my file.txt \ " "
NOTA: inserire la password dell'utente solo quando richiesto. NOTA: USER @ DOMAIN no compatibile con / netonly. NOTA: / profilo non è compatibile con / Netonly.