Ich möchte meine C#-Konsolenanwendung als Administrator ohne UAC auf einem Nicht-Administratorkonto ausführen. Das Problem ist, dass meine App mit Nicht-Administratorrechten ausgeführt wird, wenn ich UAC entweder mit dem Taskplaner oder dem Microsoft Compatibility Kit deaktiviere. Ich kann eine App nur mit Administratorrechten öffnen, wenn ich mit der rechten Maustaste auf „Als Administrator ausführen“ klicke und das Passwort eingebe. Aber das möchte ich nicht. Ich möchte die App mit Administratorrechten auf einem Nicht-Administratorkonto ausführen. Ich weiß nicht, wo das Problem liegt. Wenn ich versuche, die Anwendung mit „runas“ auszuführen und ein Administratorkonto mit dem richtigen Passwort verwende, erhalte ich die Meldung: Zugriff verweigert. Ich weiß nicht, ob das Problem in meiner Anwendung oder woanders liegt.
Danke
Antwort1
Fügen Sie die Anwendungsmanifestdatei hinzu und geben Sie den folgenden Code ein
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Antwort2
Die Benutzerkontensteuerung lässt sich nicht umgehen, indem Sie den Taskplaner zum „Ausführen mit höchsten Berechtigungen“ verwenden.
Wenn Sie eine Anwendung haben, die ausgeführt werden und mit dem angemeldeten Benutzer interagieren muss, wird diese Anwendung mit den Berechtigungen des Benutzers ausgeführt. Sie können den Taskplaner verwenden, um eine Aufgabe als anderer Benutzer auszuführen, aber dann wird sie nicht mit dem angemeldeten Benutzer interagieren. Wenn Sie eine Aufgabe als angemeldeter Benutzer ausführen, wird die Anwendung auf die höchste Berechtigung beschränkt, die der Benutzer hat.
Auch die andere Vorgehensweise mit dem Anwendungskompatibilitäts-Toolkit löst das Problem nicht. Dabei wird eine fehlerhafte Anwendung, die ein Administratorkennwort „erfordert“, aber eigentlich keine Administratorberechtigungen „braucht“, so gestaltet, dass sie ohne UAC-/Administratoraufforderungen ausgeführt wird.
Wenn Ihre Anwendung Administratorrechte „erfordert“, MUSS der Benutzer die Anwendung als ein anderer Benutzer mit Administratorrechten und unter Verwendung des Benutzernamens und des Kennworts dieses Benutzers ausführen, sonst schlägt die Anwendung fehl.
Durch das Deaktivieren der Benutzerkontensteuerung auf dem Computer wird nicht nur die Systemsicherheit erheblich verringert, sondern es führt auch dazu, dass Sie beim Ausführen einer App mit einem eingeschränkten Benutzerkonto nicht einmal dazu aufgefordert werden, die Rechte mit den Anmeldeinformationen eines Administratorbenutzers zu erhöhen, und Ihre Anwendung schlägt fehl, wenn sie Administratorzugriff erfordert.
Das Problem besteht darin, dass Ihre App Administratorrechte erfordert. Das muss behoben werden. Was erfordert Administratorrechte? Warum? Entwickeln Sie die App so um, dass dies nicht der Fall ist. Andernfalls gibt es keine „sichere“ Möglichkeit, einem Nicht-Administrator das Ausführen einer Anwendung mit Administratorrechten zu ermöglichen. Es ist nicht mehr akzeptabel und schon seit Jahren nicht mehr üblich, Anwendungen zu entwickeln, die diese Berechtigungsstufe für Standardbenutzer erfordern.
Wenn Sie unbedingt einen Standardbenutzer eine Anwendung als Administrator ausführen lassen müssen, können Sie den Befehl „runas“ oder einige Administratortools von Drittanbietern verwenden, mit denen ein Benutzer Zugriff anfordern und ein Administrator aus der Ferne antworten und die Anwendung zulassen kann. Auch hier liegt das Problem bei der Anwendung, nicht beim Betriebssystem. Der Versuch, dies zu umgehen, wäre in den meisten Anwendungsfällen, in denen Benutzer ohnehin eingeschränkte Konten verwenden müssen, nicht akzeptabel.