【发布时间】:2013-05-20 10:23:11
【问题描述】:
我正在使用 psexec 在远程系统中启动可执行文件。远程系统是64位的,而使用psexec推送的exe是32位的。
在运行“psexec”时,我提供了远程系统的管理员凭据,并且远程进程是使用这些凭据本身创建的。
32 位 exe 在远程系统上运行时,会执行一些操作,然后使用 ShellExecute 生成另一个可执行文件。
我发现在 windows 7 上,ShellExecute 返回错误代码 5(即 SE_ERR_ACCESSDENIED)。整个过程运行良好,目标机器为XP时ShellExecute成功。
有相同的想法或解决方法吗?我尝试初始化 COM ,但没有任何好处。 如果需要更多详细信息/代码,请告诉我。
【问题讨论】:
-
可能是 UAC 问题?
-
UAC 在机器中被关闭。我尝试使用 CreateProcess 作为解决方法,它返回 1326 作为错误代码,这意味着“登录失败”。我尝试在调用 CreateProcess 之前添加 NetUseAdd() 并返回相同的错误代码。任何帮助将不胜感激。
-
你传递给 CreateProcess 的可执行路径是什么?本地路径、UNC 路径、映射驱动器路径?
-
一个 unc 路径 \\
\ \ExeName.exe。在 CreateProcess 中,我提供了第一个参数的完整路径,然后是下一个参数。所有其他参数为 0 或 NULL。我收到错误 1326。 -
通过 psexec 提供的管理员凭据在包含该文件的服务器上是否有效?