9

我有一个 python 程序,它应该清理许多目录,其中一个是C:\windows\system32\inetsrv\metaback;但是,os.path.exists()即使该目录存在(并且我有权访问它),也会在该目录上返回 False。

有趣的是,windirstat工具也完全忽略了它。

谁能想到这可能的原因以及我可以检查它是否存在的另一种方法?我什至似乎无法运行os.listdir()它。

更新:os.path.exists()如果 Windows 框是 32 位,则在此目录上工作,但如果它是 64 位,则不能。也可以在 32 位机器上的 windirstat 中正确显示。

4

2 回答 2

26

这是工作中系统文件夹的重定向。 当 32 位进程在 64 位版本的 Windows 上运行并使用路径%WINDIR%\System32时,Windows 会替换为%WINDIR%\SysWow64.

该函数返回 false 以告诉您它C:\windows\syswow64\inetsrv\metaback不存在,而且它很可能是绝对正确的。

请尝试:

os.path.exists("C:\\windows\\sysnative\\inetsrv\\metaback")
于 2011-02-06T04:38:04.573 回答
1

Windows x64 的安全性比 Windows x86 更严格;尤其是在当前版本的操作系统下(2008 年 7 月)。

听起来您的脚本实际上没有运行所需的权限。一般来说,MS 锁定了很多需要提升权限才能执行任何操作的目录路径(如 c:\inetpub)。

这有很多原因,通常被认为是一件非常好的事情。

我相信您会想要将您的脚本(或执行它的任何脚本)标记为“以管理员身份运行”,以便对其进行提升控制。当然,这可能需要您通过 UAC 确认执行。

有关详细信息,请访问 serverfault.com 并在那里询问。

于 2011-02-06T04:30:28.037 回答