Python无法查看C:\ Windows \ System32 \ GroupPolicy中的文件或文件夹

我遇到了一个问题,其中python无法看到计算机上存在的文件夹或文件。 我已经确保path中没有符号链接,并且我完全控制了NTFS文件权限。 我甚至删除了任何隐藏的属性。 以下是我正在使用的脚本及其输出:

import os path = 'C:\\Windows\\System32\\GroupPolicy\\Machine' print path test = os.path.exists(path) print test C:\Windows\System32\GroupPolicy\Machine False 

我不确定为什么当我确定文件夹确实存在时,它返回False。 如果我从path中删除“\ Machine”,它将返回True。 我已经从命令提示符validation了以下命令:

 if exist c:\Windows\System32\GroupPolicy\Machine echo found 

任何意见,如何得到这个python的工作将不胜感激。 这里是我使用的Python版本:Python 2.7.6(默认,2013年11月10日,19:24:18)[MSC v.1500 32位(Intel)]在win32上

好吧,经过一番挖掘,发现它与权限无关,而是与文件系统重定向有关。 由于我在Windows x64(使用x86,因为我使用py2exe)上使用x86版本的python,所以Windows将System32和子目录上的任何查询重定向到SysWOW64。 这意味着我实际上查询不存在的“C:\ Windows \ SysWOW64 \ GroupPolicy \ Machine”。

为了解决这个问题,我发现如何使用这里找到的配方禁用文件系统重定向: http : //code.activestate.com/recipes/578035-disable-file-system-redirector/

这是我的最终代码,现在可以禁用重定向,并允许在64位机器上打开和查询System32中的文件。

 import ctypes class disable_file_system_redirection: _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection def __enter__(self): self.old_value = ctypes.c_long() self.success = self._disable(ctypes.byref(self.old_value)) def __exit__(self, type, value, traceback): if self.success: self._revert(self.old_value) disable_file_system_redirection().__enter__() import os path = 'C:\\Windows\\System32\\GroupPolicy\\Machine' print path test = os.path.exists(path) print test