我有一个32位进程,可以在32位或64位的Windows上运行。因此,如果该进程尝试访问文件c:\windows\system32\file.ext
,它将被重定向到c:\windows\SysWOW64\file.ext
。目前为止一切都好-我不想禁用重定向。
我的问题是,我的进程实际上并没有访问该文件-相反,它只取得其路径并将其写入文本文件,我希望在64位系统上该文本文件读取SysWOW64
,在32位系统上读取system32
。我该怎么办?
我有一个32位进程,可以在32位或64位的Windows上运行。因此,如果该进程尝试访问文件c:\windows\system32\file.ext
,它将被重定向到c:\windows\SysWOW64\file.ext
。目前为止一切都好-我不想禁用重定向。
我的问题是,我的进程实际上并没有访问该文件-相反,它只取得其路径并将其写入文本文件,我希望在64位系统上该文本文件读取SysWOW64
,在32位系统上读取system32
。我该怎么办?
[DllImport("shell32.dll")]
public static extern bool SHGetSpecialFolderPath(
IntPtr hwndOwner, [Out]StringBuilder lpszPath, int nFolder, bool fCreate
);
public static string GetSystemDirectory()
{
StringBuilder path = new StringBuilder(260);
NativeMethods.SHGetSpecialFolderPath(IntPtr.Zero, path, 0x0029, false);
return path.ToString();
}
此致
System32 C:\Windows\System32 是64位文件的Windows系统文件夹(系统目录) SysWOW64 C:\Windows\SysWOW64 是32位文件的Windows系统文件夹(系统目录) Program Files C:\Program Files 是64位程序文件的文件夹 Program Files (x86) C:\Program Files (x86) 是32位程序文件的文件夹