Server 2008 kann nicht für Benutzerrechte setzen
-
27-09-2019 - |
Frage
Ich habe versucht, in C # 3.5 einige Win32 Sachen zu tun erhöhte Benutzerrechte für eine Konsolenanwendung zu bekommen. Ich entwickle auf Visual Studio 2008 SP1 / DDR und die Dinge gut funktionieren, wenn sie unter dem Debugger ausführen. Dinge auch funktionieren, wenn ich die Konsole app Stand-alone laufen. Dinge auch gut laufen, wenn ich alles in eine MSI-Paket und es auf einem 2003-Server installieren und die Konsolenanwendung ausgeführt werden.
Wenn ich die gleiche MSI nehmen und installieren Sie es auf einem 2008-Server mit UAC aktiviert ist, dann die Konsole app laufen, erhalte ich Meldungen wie diese:
Unable to set right for the account "DOMAIN\QAUSER": SeCreateGlobalPrivilege
System.UnauthorizedAccessException Attempted to perform an unauthorized operation.
Ich kann meine deployment / Server-Admins nicht erwarten, dass irgendetwas mit meiner app zu tun, außer es zu installieren, und sie werden sich nicht drehen off UAC. Es muss ein programmatischer Weg, um richtig eingestellten Benutzerrechte sein, dass ich an der Konsole App hinzufügen kann - Wer weiß, wie
Danke.
Lösung
Wahrscheinlich verwenden Sie " Global \" Präfix die Objektname in der Anwendung und Ihre Anwendung in einer Remote Desktop Session Host (RD-Sitzungshost) Server-Sitzung gestartet werden. In dem Fall müssen Sie Ihr Programm aktivieren SE_CREATE_GLOBAL_NAME (SeCreateGlobalPrivilege
) Privileg. Siehe C # - Wie SeDebugPrivilege (aber Verwendung SE_CREATE_GLOBAL_NAME
ermöglichen statt SE_DEBUG_NAME
) oder manipulieren Privilegien in verwaltetem Code zuverlässig, sicher und effizient wie ein Beispiel.
Andere Tipps
Ich gehe davon aus, dass UAC auf den 2008-Computer aktiviert ist, und ich kann noch nicht auf Ihrer Frage Kommentar zu erfahren.
Wenn ja, stellen Sie sicher, dass in Ihrer app.manifest Datei in VS (unter Eigenschaften), ändern
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Auch wenn der Code als Administrator ausgeführt wird, haben Sie durch die UAC Warnung erhalten.