试图在没有运气的情况下在数据库中找到第三个问题。
所以,我正在开发64位系统(Windows 7)。 我正在制作一个简单的控制台程序,检查Windows系统上是否存在dll。在这种情况下,我检查system32文件夹,然后在sysWOW64文件夹中。 该程序是32位应用程序。
在32位目标平台上,我可以正常检查win32dll,因为SysWOW64目录不存在,没问题。 当它在64位系统上执行时,我可以检查win32目录,但sysWOW64目录总是指向system32目录。
似乎在64位系统上有一种重定向。
我正在尝试使用“Wow64DisableWow64FsRedirection”但我编译时出现“错误C3861:'Wow64DisableWow64FsRedirection':标识符未找到”。
所以有两个问题:
答案 0 :(得分:2)
您不必搜索DLL。 LoadLibrary()和LoadLibraryEx()会自动搜索所有相关文件夹。
search order如下:
如果您确定要禁用重定向,可以使用Wow64DisableWow64FsRedirection执行此操作。要使其“正常”,您必须设置
#define _WIN32_WINNT 0x0501 (or higher)
包含windows.h之前
答案 1 :(得分:0)
关于如何确定我目前是在32位还是64位系统上,我认为你可以检查一个int指针的大小......
int bits = IntPtr.Size * 8;
Console.WriteLine( "{0}-bit", bits );
答案 2 :(得分:0)
虽然不是你想要的东西,但如果你知道那些文件可以找到的只有两个地方会有点浪费,如果用户修改了它们可能就行不通了(尽管还有很多其他的东西)也会破坏用户),你可以简单地使用%Path%
环境变量。