0

我正在尝试编写一个脚本,它将一些基本的 windows 命令的输出收集到一组文件中,并且发现我的 vssadmin 命令令人沮丧。命令比较简单

os.system('vssadmin list writers>> x:\foo\vss.txt')

问题是我正在用 python 32 位编写并希望确保这将在 64 位 Windows 上运行。执行此操作时,返回为:

vssadmin 1.1 - 卷影复制服务管理命令行工具 (C) 版权所有 2001-2005 Microsoft Corp.

错误:卷影复制服务组件遇到意外错误。查看应用程序事件日志以获取更多信息。

我可以从 32 位 python 调用 64 位命令行并决定是否使用位深度检测功能调用它,还是有另一个更优雅的解决方案?

跟进:使用 MBu 作为起点,我发现以下命令可以解决问题:

os.system('%systemroot%\\sysnative\\cmd.exe /c vssadmin list writers > x:\\foo\\vss.txt')
4

2 回答 2

0

显式启动C:\Windows\SysWOW64\vssadmin.exe以始终获取 64 位版本。

于 2013-08-15T15:11:35.413 回答
0

在 Windows 2008 或更高版本下,您可以启动c:\Windows\Sysnative\vssadmin.exe. 在 Windows 2003 下需要修补程序,但您也可以创建文件系统连接以从 32 位应用程序访问 64 位系统文件。有关详细信息,请参阅我对这个问题的回答。虽然它是关于从 32 位 cmd.exe 启动 64 位 cmd.exe,但所有应用程序的规则保持不变。

于 2013-08-16T19:00:47.450 回答