Ich möchte mein Setup "d: \ myapp_setup_update.exe" ausführen, und da ich es von einem Dienst ausführen, versuche ich CreateProcessAsUsers zu verwenden.CreateProcessAsUser führt die Anwendung nicht aus
Allerdings könnte ich die Syntax falsch verstanden haben. Vor dem Ausführen dieses Codes habe ich sichergestellt, dass der Pfad existiert und dass hToken nicht 0 ist.
Dies ist mein derzeitiger Ansatz.
Hat jemand einen Fehler gefunden? Ich bin nicht einmal sicher über die API-Deklaration. MSDN verwendet Longs in einigen Beispielen und dann wieder Zeichenfolgen. Wirklich seltsam.
Vielen Dank für die Hilfe!
Private Declare Function CreateProcessAsUser Lib "advapi32.dll" _
Alias "CreateProcessAsUserA" _
(ByVal hToken As Long, _
ByVal lpApplicationName As String, _
ByVal lpCommandLine As String, _
ByVal lpProcessAttributes As Long, _
ByVal lpThreadAttributes As Long, _
ByVal bInheritHandles As Long, _
ByVal dwCreationFlags As Long, _
ByVal lpEnvironment As Long, _
ByVal lpCurrentDirectory As String, _
lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long
Private Function pDoIt(ByVal hToken As Long) As Boolean
Dim sChildProcName$
sChildProcName = "d:\myapp_setup_update.exe"
Dim tProcessInfo As PROCESS_INFORMATION
Dim tStartupinfo As STARTUPINFO
tStartupinfo.cb = Len(tStartupinfo)
Dim bChildProcStarted As Boolean
bChildProcStarted = CreateProcessAsUser(hToken, sChildProcName, vbNullString, 0&, 0&, 0, 0&, 0, vbNullString, tStartupInfo, tProcessInfo)
'GetLastError always returns 0... strange
pDoIt = bChildProcStarted
End Sub