9

いくつかのディレクトリをクリーンアップすることになっているpythonプログラムを持っていますが、そのうちの1つは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 よりもかなり厳格です。特に現在のリリースの OS (7、2008) では。

スクリプトには、実行に必要なアクセス許可が実際にはないようです。一般的に言えば、MS はかなりの数のディレクトリ パス (c:\inetpub など) をロックダウンしました。これらのパスは、アクションを実行するために昇格された特権を必要とします。

これには大きな理由があり、一般的には非常に良いことだと考えられています。

スクリプト (またはそれを実行するもの) を「管理者として実行」としてマークして、昇格した制御を与えることをお勧めします。もちろん、これには UAC を介して実行を確認する必要がある場合があります。

詳細については、serverfault.com にアクセスして、そこで質問してください。

于 2011-02-06T04:30:28.037 に答える