为什么os.path.exists("C:\\ windows \\ system32 \\ inetsrv \\ metaback")返回False,即使它存在?

Jef*_*eff 9 python windows wow64

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

有趣的是,windirstat工具完全错过了它.

任何人都可以想到这可能是什么原因以及我可以检查它是否存在的另一种方式?我甚至无法忍受os.listdir()它.

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

Ben*_*igt 26

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

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

尝试改为:

os.path.exists("C:\\windows\\sysnative\\inetsrv\\metaback")
Run Code Online (Sandbox Code Playgroud)


Not*_*tMe 1

Windows x64 安全性比 Windows x86 严格得多;特别是在当前版本的操作系统 (7, 2008) 下。

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

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

我相信您会希望将您的脚本(或执行它的任何内容)标记为“以管理员身份运行”,以便赋予它更高的控制权。当然,这可能需要您通过 UAC 确认执行。

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