5

Windows 8.1 マシンに 802.1x 証明書をインストールする Python スクリプトに取り組んでいます。このスクリプトは、Windows 8 および Windows XP で正常に動作します (他のマシンでは試していません)。

問題を切り分けました。フォルダをクリアすることに関係しています

"C:\Windows\system32\config\systemprofile\AppData\LocalLow\Microsoft\CryptURLCache\Content"

問題は、このフォルダーでモジュール os とコマンド listdir を使用して、フォルダー内の各ファイルを削除していることです。ただし、フォルダーが実際に存在する場合でも、フォルダーが存在しないというlistdirエラーが発生します。

問題os.listdirは、LocalLow フォルダーが表示されないことのようです。2行のスクリプトを作成すると:

import os

os.listdir("C:\Windows\System32\config\systemprofile\AppData") 

次の結果が表示されます。

['Local', 'Roaming']

ご覧のとおり、LocalLowがありません。

パーミッションの問題かもしれないと思ったのですが、次のステップが何であるかを理解するのに深刻な問題を抱えています. コマンドラインから管理者としてプロセスを実行していますが、フォルダーが表示されません。

前もって感謝します!

編集: 文字列を r"C:\Windows\System32\config\systemprofile\AppData"、"C:\Windows\System32\config\systemprofile\AppData"、または C:/Windows/System32/config/systemprofile/AppData に変更します。 " すべて同じ結果になります

編集: この問題のもう 1 つの異常な問題: その場所に新しいディレクトリを手動で作成すると、os.listdir からもそれを見ることができません。さらに、メモ帳++の「名前を付けて保存..」コマンドを使用して、LocalLowまたは新しいフォルダーを参照できません。

これは Windows 8.1 プレビューのバグだと思い始めています。

4

3 に答える 3

8

最近この問題に遭遇しました。

Windowsファイルシステムリダイレクタが原因であることがわかりました

そして、次のpythonスニペットをチェックアウトできます

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)


#Example usage
import os

path = 'C:\\Windows\\System32\\config\\systemprofile\\AppData'

print os.listdir(path)
with disable_file_system_redirection():
    print os.listdir(path)
print os.listdir(path)

参照: http://code.activestate.com/recipes/578035-disable-file-system-redirector/

于 2016-04-11T06:20:07.490 に答える
1

この2行でどうやって内容を一覧表示できるのか気になります。コードでエスケープ シーケンス \W、\S、\c、\s、\A を使用しています。次のようにバック スラッシュをエスケープしてみてください。

import os
os.listdir('C:\\Windows\\System32\\config\\systemprofile\\AppData')
于 2013-10-04T18:10:50.547 に答える