Server 2008 non può impostare i diritti utente
-
27-09-2019 - |
Domanda
ho tentato di fare alcune cose Win32 in C # 3.5 per ottenere elevati diritti utente per una console app. I sviluppare su Visual Studio 2008 SP1 / GDR e le cose funzionano bene quando viene eseguito nel debugger. Cose anche il lavoro bene quando ho eseguito l'applicazione console stand-alone. Le cose funzionano bene anche quando Che tipo di imballaggio tutto in un MSI e installarlo su un server 2003 e eseguire l'applicazione console.
Se prendo lo stesso MSI e installarlo su un server 2008 con UAC abilitato, quindi eseguire l'applicazione console, ricevo messaggi come questo:
Unable to set right for the account "DOMAIN\QAUSER": SeCreateGlobalPrivilege
System.UnauthorizedAccessException Attempted to perform an unauthorized operation.
Non posso pretendere i miei amministratori distribuzione / server per fare qualsiasi cosa con la mia app diverso installarlo, e non hanno intenzione di spegnere UAC. Ci deve essere un modo programmatico per impostato correttamente i diritti degli utenti che posso aggiungere alla console app -? Qualcuno sa come
Grazie.
Soluzione
Probabilmente si utilizza " Global \" il prefisso per il nome dell'oggetto nella propria applicazione e la vostra domanda verrà avviato all'interno di un desktop remoto Host sessione (Host sessione) sessione del server. Nel caso il vostro programma deve abilitare SE_CREATE_GLOBAL_NAME (SeCreateGlobalPrivilege
) privilegio. Vedere C # - Come abilitare SeDebugPrivilege (ma l'uso SE_CREATE_GLOBAL_NAME
invece di? SE_DEBUG_NAME
) o Manipolare privilegi in codice gestito affidabile, sicuro, efficiente e come un esempio.
Altri suggerimenti
Suppongo che UAC è abilitato sulla macchina 2008 e non posso commentare ancora sulla sua domanda per scoprirlo.
Se è così, assicurarsi che nel file app.manifest in VS (sotto Proprietà), il cambiamento
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
a
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Anche se il codice viene eseguito come amministratore, è necessario ottenere dal l'avviso UAC.