.NET-Startprozess mit höheren Rechten

8

Ich versuche, ein Programm mit Administratorrechten über eine C # -Anwendung auszuführen, die nur mit Benutzerrechten aufgerufen wird.

Code

%Vor%

Es startet Winzip, aber nur mit Benutzerrechten. Gibt es etwas, was ich falsch mache oder ist es sogar möglich, einen Prozess mit höheren Rechten zu starten?

Danke!

Bearbeiten: Hier ist der Grund für die Frage, vielleicht hilft es zu verstehen, was ich eigentlich brauche.

  

Ich habe beispielsweise winzip verwendet, um eine allgemeine Vorstellung davon zu bekommen, was mit meinem Code nicht stimmt. Das eigentliche Problem ist, unser Unternehmen verwendet 2 Versionen eines Programms. Bevor Sie jedoch eine der Versionen starten, müssen Sie eine DLL-Datei mit regsvr32 (mit Administratorrechten) importieren. Jetzt möchte ich ein Programm schreiben, das den Benutzer die Version auswählen lässt, die DLL importiert und die richtige Anwendung startet.

    
KenavR 12.04.2012, 10:40
quelle

3 Antworten

10

Sie müssen ProcessStartInfo.UseShellExecute auf true setzen. und ProcessStartInfo.Verb bis runas :

%Vor%

Dies führt dazu, dass die Anwendung als Administrator ausgeführt wird. UAC wird jedoch den Benutzer zur Bestätigung auffordern. Wenn dies nicht erwünscht ist, müssen Sie ein Manifest hinzufügen, um den Hostprozess dauerhaft zu verbessern Privilegien.

    
Sani Singh Huttunen 12.04.2012 10:55
quelle
2

Sie können einen Prozess als einen anderen Benutzer (auch einen Administrator) mit dem CreateProcessAsUser-Funktion (Win32-API). CreateProcessAsUser akzeptiert ein Benutzer-Token als ersten Parameter, dh ein Identitätswechsel-Token.

Sie müssen DLLImport verwenden, um die Funktion von der Windows DLL zu laden.

Sehen Sie sich diese Beispielimplementierung an, die ich in einem meiner Projekte verwendet habe:

%Vor%     
aleroot 12.04.2012 11:05
quelle
0

Ref:
How to Starten Sie einen Prozess als Administratormodus in C #
Prozessrechte manuell erhöhen?

%Vor%

//

%Vor%

// Vista oder höher überprüfen

%Vor%

Ref: Wie starte / starte ich einen neuen Prozess mit Administratorrechten? ASP.net Forum

  

Eine andere Möglichkeit besteht darin, den Benutzer admin zu imitieren. Sie können dies tun, indem Sie   Aufrufen der Anmeldefunktion und Annehmen der Identität des Benutzers, dessen Token Sie sind   werde dann bekommen. Wenn Sie sich einen Benutzer im Code vorstellen, sehen Sie sich Folgendes an:    WindowsImpersonationContext   Klasse   . Verwenden Sie den Scheck    Ссылка für   GetCurrentUser, um festzustellen, ob der Identitätswechsel erfolgreich war.

Code-Snippet:

%Vor%

// Versuche dies mit Administrator Login, ich habe es noch nicht getestet ..

%Vor%     
Niranjan Kala 12.04.2012 11:21
quelle

Tags und Links