vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Shell-Anwendung als Admin starten und warten, bis diese beendet ist 
Autor: BotschafterSarek
Datum: 29.10.13 16:11

Hallo zusammen,

ich möchte aus einem VB6-Programm heraus eine Anwendung als Administrator starten. Laut einem Thread bei Microsoft (support.microsoft.com/kb/285879) brauche ich dazu die API-Funktion CreateProcessWithLogonW. Konkret geht es um folgenden Code:

Public Function W2KRunAsUser(ByVal UserName As String, _
        ByVal Password As String, _
        ByVal DomainName As String, _
        ByVal CommandLine As String, _
        ByVal CurrentDirectory As String) As Long
 
    Dim si As STARTUPINFO
    Dim pi As PROCESS_INFORMATION
 
    Dim wUser As String
    Dim wDomain As String
    Dim wPassword As String
    Dim wCommandLine As String
    Dim wCurrentDir As String
 
    Dim Result As Long
 
    si.cb = Len(si)
 
    wUser = StrConv(UserName + Chr$(0), vbUnicode)
    wDomain = StrConv(DomainName + Chr$(0), vbUnicode)
    wPassword = StrConv(Password + Chr$(0), vbUnicode)
    wCommandLine = StrConv(CommandLine + Chr$(0), vbUnicode)
    wCurrentDir = StrConv(CurrentDirectory + Chr$(0), vbUnicode)
 
    Result = CreateProcessWithLogonW(wUser, wDomain, wPassword, _
          LOGON_WITH_PROFILE, 0&, wCommandLine, _
          CREATE_DEFAULT_ERROR_MODE, 0&, wCurrentDir, si, pi)
    ' CreateProcessWithLogonW() does not
    If Result <> 0 Then
        CloseHandle pi.hThread
        CloseHandle pi.hProcess
        W2KRunAsUser = 0
    Else
        W2KRunAsUser = Err.LastDllError
        MsgBox "CreateProcessWithLogonW() failed with error " & _
          Err.LastDllError, vbExclamation
    End If
 
End Function
Jetzt muß ich aber gleichzeitig überwachen, wann die besagte Anwendung wieder geschlossen wird. Das mache ich normalerweise mit folgendem Code:
hInstance = Shell(exe_der_anwendung, vbHide)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or SYNCHRONIZE, True, _
  hInstance)
Do
lngRetval = GetExitCodeProcess(hProcess, lngExitCode)
DoEvents
Loop Until lngExitCode <> STILL_ACTIVE
Aber wie kann ich das jetzt verbinden?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Shell-Anwendung als Admin starten und warten, bis diese been...2.416BotschafterSarek29.10.13 16:11
Re: Shell-Anwendung als Admin starten und warten, bis diese ...1.402Blackbox29.10.13 17:56
Re: Shell-Anwendung als Admin starten und warten, bis diese ...1.392BotschafterSarek30.10.13 05:58
Re: Shell-Anwendung als Admin starten und warten, bis diese ...1.380BotschafterSarek30.10.13 12:20

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel