我在x64操作系统上运行了x86 C#.Net应用程序(在本例中为Windows 2008 R2)。我试图在System32中检查my.DLL的文件版本,但它仍然在SysWow64中获取my.DLL的版本,即使我正在禁用文件系统重定向。
以下是精简代码:
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);
....
string myDLL = "c:\\windows\\system32\\my.dll";
IntPtr ptr = new IntPtr();
Wow64DisableWow64FsRedirection(ref ptr);
var ver = new Version(FileVersionInfo.GetVersionInfo(myDLL).FileVersion);
Debug.WriteLine(String.Format("file={0} ver={1}", myDLL, ver));
Wow64RevertWow64FsRedirection(ptr);
它总是在SysWow64中显示my.dll的版本。知道我可能做错了吗?