标题: [其他] [已解决]win7以上如何以特定方式调用宿主 [打印本页]
作者: CrLf 时间: 2015-5-5 23:20 标题: [已解决]win7以上如何以特定方式调用宿主
本帖最后由 CrLf 于 2015-5-6 22:40 编辑
1、
32 位程序如何用原生的 64 位宿主运行的 vbs、bat ?
直接运行的话,C:\Windows\System32\cmd.exe 会自动重定向到 C:\Windows\SysWOW64\cmd.exe 路径下的 32 位版本
2、
如何通过命令行“以管理员身份运行”某个程序,而非通过设置属性或右键运行实现?
在管理员账户下双击运行的程序竟然不具备“管理员身份”,我也是醉了...
作者: bailong360 时间: 2015-5-5 23:30
本帖最后由 bailong360 于 2015-5-5 23:43 编辑
第一个没用过64位系统(囧)...
第二个可以这样...就是代码略长了点- mshta vbscript:"<script language=vbs>Set UAC=CreateObject(""Shell.Application""):UAC.ShellExecute ""%__APPDIR__%cmd.exe"", ""参数"", """", ""runas"", 1:window,close</script>"
复制代码
作者: CrLf 时间: 2015-5-6 00:04
本帖最后由 CrLf 于 2015-5-6 00:33 编辑
回复 2# bailong360
果然可行!学习了
这个 %__APPDIR__% 藏得好深,几乎搜索不到相关资料
研究了一下 UAC.ShellExecute,大致弄懂了...那个 A 不是必要的,目前知道的 vOperation 除了 runas 还有 open、print、edit
作者: bailong360 时间: 2015-5-6 18:02
回复 3# CrLf
google资料的时候偶然发现的 http://ss64.com/nt/syntax-variables.html
嗯,A只是传过去的参数,复制的时候忘记删掉了
google了一下第一个问题,果然有老外也遇到过
他们给出的解答是指定目录%windir%\Sysnative
比如运行64位findstr就用%windir%\Sysnative\findstr.exe
我的电脑是32位的,不好测试,兄台试一试看能否成功
作者: CrLf 时间: 2015-5-6 18:44
回复 4# bailong360
试过指定具体路径的办法,但 32 位程序只要一涉及 C:\Windows\System32,就会被重定向到 C:\Windows\SysWOW64...我都蛋疼死了
作者: bailong360 时间: 2015-5-6 22:24
回复 5# CrLf
MSDN上说32位程序访问%windir%\system32会被重定向到SysWOW64
但是访问%windir%\Sysnative可以直接访问system32,兄台不妨试试
In most cases, whenever a 32-bit application attempts to access %windir%\System32, the access is redirected to %windir%\SysWOW64.
32-bit applications can access the native system directory by substituting %windir%\Sysnative for %windir%\System32.
作者: CrLf 时间: 2015-5-6 22:33
回复 6# bailong360
原来如此,问题完美解决。
之前尝试 dir "%windir%\Sysnative" 未果,以为不是通用的解决方案,结果在 32 位 cmd 里比较了下下面两条,观察发现确实有作用:- mshta.exe vbscript:msgbox("test"):close
- %windir%\Sysnative\mshta.exe vbscript:msgbox("test"):close
复制代码
两个问题至此完美解决,感谢兄台指点迷津
作者: bailong360 时间: 2015-5-6 22:47
回复 7# CrLf
能帮到兄台也实属荣幸
作者: wskwfkbdn 时间: 2016-2-22 08:12
本帖最后由 wskwfkbdn 于 2016-2-22 08:20 编辑
回复 5# CrLf
关闭文件重定向即可,如果不运行64位cmd就没法写64位的部分注册表项。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |