【发布时间】:2018-04-20 13:14:57
【问题描述】:
我在 C# 中创建了一个 32 位应用程序。因为它是 32 位的,所以它不能访问 64 位的位置,例如 C:\Windows\System32。要访问 64 位位置,我知道我需要改用 C:\Windows\Sysnative。
我想检查 System32 中是否存在文件。我在那里放置了一个文件,并且可以在我的文件资源管理器中查看它,所以我知道它存在。
但是,当我使用以下代码时,File.Exists 方法总是返回 false。 Sysnative 似乎根本没有重定向。如何使用 File.Exists 和 %windir% 和 Sysnative 从 32 位应用程序中查找 System32 中的文件?
string fileName = "someFile.dll";
string path = Environment.ExpandEnvironmentVariables(@"%windir%\Sysnative\" + fileName);
//path should be 'C:\Windows\System32\'+fileName;
bool fileExists = File.Exists(path); //Always returns false
【问题讨论】:
-
如果您还在文件名中包含文件扩展名,这应该可以工作。
-
@JohnEphraimTugado 是的,包含文件扩展名。编辑原始帖子以更清晰。我的印象是,将 %windir%、Sysnative、Environment.ExpandEnvironmentVariable 和 File.Exists 一起使用是一种奇怪的组合。但这似乎不是一个非常特殊的情况——如果这是一个问题,肯定有人在某个地方记录了它吗?
-
您确定您的应用程序编译为 32 位吗?不是AnyCpu?您的代码应该可以工作。
标签: c# windows 32bit-64bit system32