我想将c:\Windows\regedit.exe
复制到具有regedit2.exe
名称的同一目录,但是当我尝试将其复制时,出现一个错误,提示“找不到regedit.exe
文件”,或者有时将其复制到windows\SysWOW64
目录下。实际上我知道win64
正在重定向它,但是如何我禁用重定向并将Windows/regedit.exe复制到Windows/regedit2.exe,我的示例代码是
if(File.Exists(@"c:\Windows\regedit.exe"))
try
{
File.Copy(@"c:\Windows\regedit.exe", @"c:\Windows\regedit2.exe", true);
}
catch (Exception ex){}
有谁能帮助我
最佳答案
有可用的Win32函数,可以禁用和启用重定向。
[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;
// Disable redirection.
Wow64DisableWow64FsRedirection(ref wow64Value);
// Do whatever you need
// .....................
// Re-enable redirection.
Wow64RevertWow64FsRedirection(wow64Value);