【问题标题】:CreateProcessAsUser doesn't run the applicationCreateProcessAsUser 不运行应用程序
【发布时间】:2016-05-24 19:15:00
【问题描述】:

我想运行我的设置“d:\myapp_setup_update.exe”,因为我从服务运行它,所以我尝试使用 CreateProcessAsUsers。

但是,我想我可能弄错了语法。 在运行此代码之前,我已确保路径存在并且 hToken 不为 0。

这是我目前的方法。

有人发现任何错误吗? 我什至不确定 API 声明。 MSDN 在某些示例中使用 long,然后再次使用字符串。真奇怪。

非常感谢您的帮助!

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

【问题讨论】:

    标签: windows api vb6


    【解决方案1】:

    知道了。我要运行的应用程序应声明为“lpCommandLine”参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      相关资源
      最近更新 更多