1

ファイルを読み込んで、そのファイルのハッシュを生成しようとしています。ほとんどの場合、これはスムーズに進みました。ただし、ハンドルを取得できないファイルがいくつかあります。例えば:

file("c:\\windows\\system32\\nvvsvc.exe")

次のエラーが発生します。IOError: [Errno 2] No such file or directory: 'c:\\windows\\system32\\nvvsvc.exe

同様に、次のコマンド:

subprocess.check_output(r"dir c:\windows\system32\nvvsvc.exe", shell = True)

次のエラーが発生します。

ファイルが見つかりません

トレースバック (最新の呼び出しが最後):

ファイル "< stdin >"、1 行目、< module > 内

ファイル「C:\Python27\lib\subprocess.py」、544 行目、check_output

Raise CalledProcessError(retcode, cmd, output=output)

subprocess.CalledProcessError: コマンド 'dir c:\windows\system32\nvvsvc.exe' がゼロ以外の終了ステータス 1 を返しました

そこにファイルがあることをcacls.exeに認めさせようとするなど、その多くのバリエーションを試しました。ただし、python インスタンス (exit()) から戻って を実行するとdir c:\windows\system32\nvvsvc.exe、そこに実際にファイルがあることが返されます。

代わりに calc.exe を使用した同様のテストでは、それを表示してハッシュすることができ、Python 内部から問題なく実行できます。

私はPython 2.7を実行しています。管理者権限 (コマンド プロンプトの管理者として実行) で python を起動しようとしましたが、何も変わりません。ファイルシステムが基本的にそのファイルが存在しないふりをしている範囲で、Python内から実行すると、権限にいくつかの変更があるようです。

参考までに、問題のファイルの所有者 (同様のものは他にもあります) はシステムであり、ファイルの cacls により、ユーザー、管理者、およびシステムからの読み取りが許可されます。

4

2 に答える 2

1

簡単な答え!(ただし、必ずしも簡単に見つけられるとは限りません) IOError に関しては、バックスラッシュをエスケープする必要がないためです。

2 番目の部分は、上記のコメントで述べたように、アクセス許可エラーのように見えます。

于 2012-04-09T05:09:26.153 に答える
0

これが 64 ビット システムの場合は、次を試してください。

subprocess.check_output(r"c:\windows\SysNative\nvvsvc.exe", shell = True)

ここでの鍵は「SysNative」です

于 2012-12-19T19:18:54.140 に答える