Fehlende Berechtigung beim Aufruf eines Windows-Kommandos

04/09/2008 - 15:27 von Christoph Duesmann | Report spam
Hallo!
Aus meiner Anwendung heraus möchte ich den Befehl 'schtasks' aufrufen.
Folgenden Code nutze ich dafür:

ImpersonateUser()

Dim proc As New Process
proc.StartInfo.FileName = Environment.GetEnvironmentVariable("WINDIR") &
"\system32\schtasks.exe"
proc.StartInfo.Arguments = _
"/create /tn Installer /tr c:\start.vbs /sc BEIMSTART /RU softinstaller /RP
abc123"
proc.StartInfo.UseShellExecute = False
proc.StartInfo.RedirectStandardOutput = True
proc.StartInfo.CreateNoWindow = True
proc.Start()
Dim sOutput As String = proc.StandardOutput.ReadToEnd()
proc.WaitForExit()
proc.Close()

ImpersonateUserUndo()

Die Funktionen "ImpersonateUser" und "ImpersonateUserUndo" nutze ich, um für
die Ausführung die erforderlichen Rechte zu erhalten. Ich nutze dazu den
Beispielcode dieser Seite http://www.gssg.de/net_impersonate.htm
Leider erhalte ich immer im MainModule des Prozesses die Meldung "Zugriff
verweigert", obwohl ich einen Domànennutzer angebe, der über administrative
Rechte auf dem Rechner verfügt. Melde ich mich als Administrator auf dem
Computer an und führe keinen Userwechsel im PRogramm durch, làuft alles
wunderbar durch.
Woran liegt das? Ich verzweifle bereits...
Danke für jeden Tipp!
Christoph Duesmann
 

Lesen sie die antworten

#1 Peter Götz
04/09/2008 - 16:04 | Warnen spam
Hallo Christoph,

Aus meiner Anwendung heraus möchte ich den
Befehl 'schtasks' aufrufen.
Folgenden Code nutze ich dafür:

ImpersonateUser()

Dim proc As New Process
proc.StartInfo.FileName = _
Environment.GetEnvironmentVariable("WINDIR") & _
"\system32\schtasks.exe"

proc.StartInfo.Arguments = _
"/create /tn Installer /tr c:\start.vbs /sc " & _


"BEIMSTART /RU softinstaller /RP abc123"

proc.StartInfo.UseShellExecute = False
proc.StartInfo.RedirectStandardOutput = True
proc.StartInfo.CreateNoWindow = True
proc.Start()
Dim sOutput As String = proc.StandardOutput.ReadToEnd()
proc.WaitForExit()
proc.Close()

ImpersonateUserUndo()

Die Funktionen "ImpersonateUser" und "ImpersonateUserUndo"
nutze ich, um für die Ausführung die erforderlichen Rechte zu
erhalten. Ich nutze dazu den Beispielcode dieser
Seite http://www.gssg.de/net_impersonate.htm
Leider erhalte ich immer im MainModule des Prozesses
die Meldung "Zugriff verweigert", obwohl ich einen
Domànennutzer angebe, der über administrative
Rechte auf dem Rechner verfügt. Melde ich mich als
Administrator auf dem Computer an und führe keinen
Userwechsel im PRogramm durch, làuft alles
wunderbar durch.
Woran liegt das?



ImpersonateUser wechselt die Identitàt nur für den
akt. Task, also den Task in welchem Dein VB-Code
abgearbeitet wird, nicht aber die Identitàt für den
Prozess, den Du neu startest.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen