是什么导致命令提示符无法识别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);
答案 0 :(得分:0)
答案 1 :(得分:0)
它不起作用的原因是,因为程序启动了32位CMD.exe。 程序本身是32位,因此默认情况下它将启动32位进程。这就是为什么Windows将我重定向到存在32位CMD.exe的Syswow64文件夹的原因。
要禁用此重定向,我使用了此功能。 http://msdn.microsoft.com/en-us/library/aa365743%28VS.85%29.aspx