在CreateProcessAsUser命令提示符中提升时无法识别WBAdmin命令

时间:2013-09-17 14:26:56

标签: windows winapi batch-file cmd

是什么导致命令提示符无法识别WBAdmin程序?

在非提升的命令提示符下,我能够使用WBAdmin。它在我启动提升的命令提示符时也有效。

在我的程序中,我通过使用LogonUser函数获得了一个usertoken,并通过提升访问权限从中获取了linktoken。使用CreateProcessAsUser,我尝试使用Elevated状态生成命令提示符。在该命令提示符下,我无法启动WBAdmin程序。它说命令没有得到承认。

  

C:\ Windows \ system32> wbadmin获取状态

     

'wbadmin'未被识别为内部或外部命令,   可操作程序或批处理文件。

我将程序作为服务启动,它在我当前的桌面上启动了一个cmd窗口。我也注意到环境设置与我当前登录的帐户不同。

区别在于:

在CreateProcessAsUser命令提示符

  

APPDATA = C:\ Windows \ system32 \设置\ systemprofile \应用程序数据\漫游

     

LOCALAPPDATA = C:\ Windows \ system32 \设置\ systemprofile \应用程序数据\本地

     

TEMP = C:\的Windows \ TEMP

     

TMP = C:\ Windows \ TEMP

     

USERPROFILE = C:\用户\默认

在使用Windows登录屏幕登录的普通用户中

  

APPDATA = C:\用户\\应用程序数据\漫游

     

LOCALAPPDATA = C:\ Users \用户PTA \应用程序数据\本地

     

TEMP = C:\用户\\应用程序数据\本地\温度

     

TMP = C:\用户\\应用程序数据\本地\温度

     

USERPROFILE = C:\用户\

变量

后缺少CreateProcessAsUser命令提示符
  

HOMEDRIVE - HOMEPATH - LOGONSERVER - PATHTEXT - USERDOMAIN

是否意味着未正确加载用户个人资料?我使用以下行作为用户登录:

LogonUser('username', 'domain', 'password', LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hUserToken);

2 个答案:

答案 0 :(得分:0)

  • 什么操作系统?
  • 在我的Windows 8 64位机器上,我可以从32位CMD复制结果 提示。
  • 从64位CMD提示符中正常工作。
  • %windir%\ SysWOW64 \ cmd.exe是32位CMD.exe
  • %windir%\ System32 \ cmd.exe是64位CMD.exe

答案 1 :(得分:0)

它不起作用的原因是,因为程序启动了32位CMD.exe。 程序本身是32位,因此默认情况下它将启动32位进程。这就是为什么Windows将我重定向到存在32位CMD.exe的Syswow64文件夹的原因。

要禁用此重定向,我使用了此功能。 http://msdn.microsoft.com/en-us/library/aa365743%28VS.85%29.aspx