問題
職場での作家、アクセスを必要とし、C:\\ Windowsの\\ System32に\\ winevt \\ファイルが下。私はPythonのオープン機能を使用しています。このタイトルは、問題があったと言います。次のようにテストコードがあります:
FN = " C:\ログ\ Security.evtx winevt \ WINDOWS \ System32に\ " FO =オープン(FN、" R ")
この問題の後、私は最初の許可をと思ったが、私は管理者権限でこのコードを実行しようとすると、問題がまだ存在しています。何が家主は、このような問題をC言語の存在でJava言語、C別にしようとしたパズル。
さらに困惑ライターとして!幸い私はこの質問を見たhttps://q.cnblogs.com/q/82369/を。
理由
64ビットのWindowsシステムでは32の実行、フォルダのリダイレクトが無効になっていない場合は、その後、C:\\ Windowsの\\ System32に\\、C:\プログラムファイルへのアクセスは、別の場所にリダイレクトされます。このプロセスは、オペレーティング・システムによって行われます。
ソリューション:
C言語Wow64DisableWow64FsRedirectionとWow64RevertWow64FsRedirectionを無効にするか、呼び出し元のスレッドでファイルを復元するリダイレクト呼び出します。ファイルのリダイレクトを無効にしたり、復元することは呼び出しスレッドだけに影響することに注意し、他のスレッドやプロセスは影響を受けません
Pythonのコードは次のよう
インポートのctypes KERNEL32 = ctypes.windll.LoadLibrary(" kernel32.dllの" ) CARG = ctypes.c_voidp(なし) kernel32.Wow64DisableWow64FsRedirection(CARG) #ファイル操作禁止ファイルリダイレクトの前に #開いているファイルやファイル操作 kernel32.Wow64RevertWow64FsRedirection(CARG)#復旧が完了した後に以前の設定を使用します