如何在win64上禁用重定向
Posted
技术标签:
【中文标题】如何在win64上禁用重定向【英文标题】:How can disable redirection on win64 【发布时间】:2013-07-03 11:37:18 【问题描述】:我想将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)
有没有人可以帮助我
【问题讨论】:
【参考方案1】:有一些可用的 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);
【讨论】:
谢谢,我想在纯 .net 中没有办法做到这一点?以上是关于如何在win64上禁用重定向的主要内容,如果未能解决你的问题,请参考以下文章
在表单登录 Glassfish 上禁用重定向到上次访问的资源