2009-03-20 15 views
6

Mam projekt instalacji i wdrażania projektów wizualnych. Dodałem do niego skrypt .cmd. Do uruchomienia skryptu potrzebne są uprawnienia administratora. Gdy użytkownik kliknie plik setup.exe, UAC monituje użytkownika o uprawnienia administratora. Tak więc założyłem, że wszystkie procesy utworzone i wywołane w setup.exe będą działały w administracji. Tak więc ustawiłem wywołanie mojej aplikacji konsolowej, która zawiera poniższy kod.programowo uruchamiać program cmd.exe jako administrator w widoku, C#

ProcessStartInfo p1 = new ProcessStartInfo(); 
p1.UseShellExecute = true; 
p1.Verb = "runas"; 
p1.FileName = "cmd.exe"; 
Process.Start(p1); 

Powinno działać tak, jak jest uruchamiane w przestrzeni administratora.

Chcę uruchomić program cmd.exe z poziomu klasy procesowej C# jako administrator.Jest uruchomiony system Windows Vista.

Próbowałem nie działa! Co mogę zrobić!

Odpowiedz

10

Spróbuj wykonaniem poleceniarunas:

... 

using System.Diagnostics; 

... 

string UserName = "user name goes here"; 
ProcessStartInfo p1 = new ProcessStartInfo(); 
    p1.FileName = "runas"; 
    p1.Arguments = String.Format("/env /u:{0} cmd", UserName); 
Process.Start(p1); 

... 

(I nie sądzę, trzeba wyraźny UseShellExecute)

+0

chcę udawać, administratora. Tak jak dzieje się to automatycznie w setup.exe. Ten prosi o hasło! –

+4

Czy spodziewałeś się innego wyniku przy próbie podszywania się pod administratora? W przeciwnym razie każdy, kto wykonuje kod, może być administratorem bez znajomości hasła. Czy to nie stanowi istotnego zagrożenia dla bezpieczeństwa? –

+0

i powtórzę pytanie. proszę spojrzeć i skomentować to. –

6

prostu spróbować tego, ten pracował dla mnie.

... 

using System.Diagnostics; 

... 

ProcessStartInfo startInfo = new ProcessStartInfo(); 
    startInfo.UseShellExecute = true;    
    startInfo.Verb = "runas"; 
    startInfo.Arguments = "/env /user:" + "Administrator" + " cmd"; 
Process.Start(startInfo); 

... 

Ashutosh

+0

pracuje dla mnie .. thanx dużo .. :) –

Powiązane problemy