Starten einer Anwendung als lokaler Admin

04/08/2009 - 08:48 von Michael Kolowicz | Report spam
Guten Morgen,

tut mir leid, dass ich nochmals drauf zu sprechen komme. Leider konnte
ich bis jetzt keine Lösung für mein Problem finden.

Ich habe auf einem Server eine Freigabe. Darin liegt unter anderem eine
Datei mit dem Namem WEMERGE.CMD

Ich möchte nun eine Anwendung schreiben die zunàchst eine Verbindung zu
der Freigabe herstellt und dann als lokaler Admin die WEMERGE.CMD
startet.

Das Herstellen der Verbidung zu dem Share funktioniert soweit auch. Nur
klappt das Ausführen als Admin nicht.

Verwendet wird folgende Code:

Public Shared Function WaitForShelledApplication(ByVal
PathToApplication As String, Optional ByVal Arguments As String = "",
Optional ByVal WindowsState As ProcessWindowStyle =
ProcessWindowStyle.Normal, _
Optional ByVal AdminUser
As String = "", Optional ByVal AdminPassword As String = "") As Integer

Dim pInfo As New ProcessStartInfo
Dim pProcess As Process
Dim sPassword As Security.SecureString = New
Security.SecureString
Dim ReturnCode As Integer = 255

Try
If AdminPassword.Length > 0 Then
For Each _char As Char In AdminPassword
sPassword.AppendChar(_char)
Next
End If

If System.IO.File.Exists(PathToApplication) = True Then

With pInfo
.Arguments = String.Format("""{0}""", Arguments)
.FileName = PathToApplication
.WindowStyle = WindowsState
.Verb = "runas"
.Password = sPassword
.UserName = AdminUser
.UseShellExecute = False
.CreateNoWindow = False
End With

pProcess = Process.Start(pInfo)
With pProcess
'.WaitForInputIdle()
.WaitForExit()
End With

ReturnCode = 0

End If
Catch ex As System.ComponentModel.Win32Exception
ReturnCode = ex.NativeErrorCode
MsgBox(ex.Message)
End Try

Return ReturnCode

End Function



Zu testzwecken habe ich statt der WEMERGE.CMD die CMD.EXE direkt
aufgerufen und dabei ist mir folgendes aufgefallen: Wenn ich den lokalen
Admin als Benutzer angeben und dann den Prozess startet, wird der
"Default User" als Benutzer angewendet (USERPROFILE="C:\D&E\Default
User")

Wenn ich aber die CMD.EXE mit "Ausführen als" und dann den lokal Admin
ausführe, dann passt auch der Pfad mit "C:\D&E\Administrator"

Wo liegt bei mir der "Knoten"? Warum wird das "Default User" Profil
geöffnet und nicht das, des Administrators?

Vielen Dank und Sorry, dass ich diese Frage nochmals aufbringe

Michael
 

Lesen sie die antworten

#1 Peter Götz
04/08/2009 - 09:48 | Warnen spam
Hallo Michael,

Ich habe auf einem Server eine Freigabe. Darin liegt
unter anderem eine Datei mit dem Namem
WEMERGE.CMD

Ich möchte nun eine Anwendung schreiben die zunàchst
eine Verbindung zu der Freigabe herstellt und dann als
lokaler Admin die WEMERGE.CMD startet.



Was heisst die "WEMERGE.CMD startet"?
Was ist das für eine Datei und wozu dient sie?

Das Herstellen der Verbidung zu dem Share funktioniert
soweit auch.



Unter welcher Benutzerkennung stellst Du die Verbindung
zum Server her?

Nur klappt das Ausführen als Admin nicht.

Verwendet wird folgende Code:



... schnipp...

Mit Deinem Code kann ich ohne die übergebenen
Argumente nicht viel anfangen.

Aber schau Dir mal

www.gssg.de -> Visual Basic -> VB.net
-> Impersonate / Benutzerwechsel

an. Dieses Beispiel zeigt, wie Du ein Programm resp.
einen Thread unter einer anderen, als der des an
Windows angemeldeten Benutzer laufen lassen kannst.

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

Ähnliche fragen