3 Stimmen

Server 2008 kann keine Benutzerrechte festlegen

Ich habe versucht, einige Win32 Sachen in C# 3.5 zu tun, um erhöhte Benutzerrechte für eine Konsole app zu erhalten. Ich entwickle auf Visual Studio 2008 SP1/GDR und Dinge funktionieren gut, wenn unter dem Debugger ausgeführt. Die Dinge funktionieren auch gut, wenn ich die Konsolenanwendung eigenständig ausführe. Die Dinge laufen auch gut, wenn ich alles in ein MSI-Paket packe und es auf einem 2003-Server installiere und die Konsolenanwendung ausführe.

Wenn ich dieselbe MSI auf einem 2008-Server mit aktivierter UAC installiere und dann die Konsolenanwendung ausführe, 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 nicht erwarten, dass meine Deployment-/Server-Administratoren irgendetwas anderes mit meiner Anwendung tun, als sie zu installieren, und sie werden die UAC nicht deaktivieren. Es muss einen programmatischen Weg geben, um die Benutzerrechte richtig einzustellen, den ich der Konsolenanwendung hinzufügen kann - weiß jemand wie?

Danke.

1voto

Oleg Punkte 219333

Wahrscheinlich verwenden Sie " Präfix "Global an den Objektnamen in Ihrer Anwendung an, und Ihre Anwendung wird innerhalb einer Remote Desktop Session Host (RD Session Host)-Serversitzung gestartet. In diesem Fall muss Ihr Programm Folgendes aktivieren SE_CREATE_GLOBAL_NAME ( SeCreateGlobalPrivilege ) Privileg. Siehe C# - Wie aktiviert man SeDebugPrivilege? (aber verwenden Sie SE_CREATE_GLOBAL_NAME anstelle von SE_DEBUG_NAME ) oder Manipulation von Privilegien in verwaltetem Code - zuverlässig, sicher und effizient als Beispiel.

0voto

darkstar3d Punkte 330

Ich gehe davon aus, dass die Benutzerkontensteuerung (UAC) auf dem 2008er-Rechner aktiviert ist und kann Ihre Frage noch nicht kommentieren, um das herauszufinden.

Wenn dies der Fall ist, stellen Sie sicher, dass Sie in Ihrer app.manifest-Datei in VS (unter Eigenschaften) Folgendes ändern

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />

zu

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

Selbst wenn der Code als Administrator ausgeführt wird, müssen Sie die UAC-Warnung überwinden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X