【发布时间】:2010-08-24 23:37:42
【问题描述】:
.NET 应用程序(托管)在 Windows 7 64 位上运行。它实际上是在 64 位环境下运行的。
应用程序检查位于 c:\windows\syswow64\calc.exe 中的正在运行的进程(例如 calc.exe)。
那么,为什么是函数
Process.MainModule.Filename
返回c:\windows\system32\calc.exe?能否从SYSWOW64目录unredirected获取有效的可执行主模块位置?
有哪些可能的解决方法?我写的最快的是下面的sn-p:
bool iWindows = pFilename.StartsWith(@"c:\windows\", StringComparison.InvariantCultureIgnoreCase);
bool iWindowsSystem32 = pFilename.StartsWith(@"c:\windows\system32\", StringComparison.InvariantCultureIgnoreCase);
if ((iWindows == true) || (iWindowsSystem32 == true)) {
string pActualFileName;
if (iWindowsSystem32 == true)
pActualFileName = pFilename.Replace(@"c:\windows\system32\", @"c:\windows\syswow64\");
else
pActualFileName = pFilename.Replace(@"c:\windows\", @"c:\windows\syswow64\");
我错过了什么吗?
【问题讨论】:
-
有完整源代码的最终解决方案吗?
标签: c# windows-7 64-bit filesystems redirect