繁体   English   中英

如何检索system32或SysWOW64的正确路径?

[英]How to retrieve correct path of either system32 or SysWOW64?

我有一个32位进程,可以在32位或64位Windows中运行。 所以,当然,如果进程试图访问文件c:\\windows\\system32\\file.ext ,它将被重定向到c:\\windows\\SysWOW64\\file.ext 到目前为止很好 - 我不想禁用重定向。

我的问题是我的进程实际上并没有访问该文件 - 而只是将其路径并将其写入文本文件 ,我希望该文本文件在64位系统上读取SysWOW64 ,并在32-上读取system32位系统。 我怎样才能做到这一点?

以下代码将返回正确的系统目录(system32 \\ syswow64):

[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();
}

在x86上你会得到%windir%\\ System32在X64上你会得到%windir%\\ SysWow64

希望这是有帮助的

如果我理解正确,你可以使用SHGetSpecialFolderPath将CSIDL_SYSTEMX86传递给csidl参数。 有效csidl的文档指出32位进程将获得:

  • 32位操作系统上的%windir%\\ system32
  • 64位操作系统上的%windir%\\ syswow64

最好的祝福

System32 C:\\ Windows \\ System32用于64位文件的Windows系统文件夹(系统目录)SysWOW64 C:\\ Windows \\ SysWOW64用于32位文件的Windows系统文件夹(系统目录)程序文件C:\\ Program Files用于64位的文件夹程序文件程序文件(x86)C:\\ Program Files(x86)32位程序文件的文件夹

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM