プログラムはファイルをsystem 32フォルダにコピーします
1513 ワード
前提条件:プログラムが正常に動作するにはsysドライバをsystems/drivesにコピーする必要があります. 64ビットプログラム 32ビットプログラム①32ビットシステムでは、上のコードが正常にコピーされます②64ビットシステムでは、上のコードがC:WindowsSysWOW 64driversにファイルをコピーします.32ビットと64ビットを区別するため、システム32にアクセスするとsyswow 64にパスがリダイレクトされます.リダイレクトを無効にすると、ファイルを正しい場所にコピーできます.
Microsoftの公式リファレンスドキュメントのアドレス:https://msdn.microsoft.com/en-us/library/aa365743%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
File.Copy(pLocalFilePath, pSaveFilePath + "\\**.sys", true);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);
IntPtr Wow64value = IntPtr.Zero;
Wow64DisableWow64FsRedirection(ref Wow64value);
File.Copy(pLocalFilePath, pSaveFilePath + "\\**.sys", true);
Wow64RevertWow64FsRedirection(Wow64value);
Microsoftの公式リファレンスドキュメントのアドレス:https://msdn.microsoft.com/en-us/library/aa365743%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396