代码之家  ›  专栏  ›  技术社区  ›  Nissim

使用32位应用程序获取syswow64目录

  •  13
  • Nissim  · 技术社区  · 14 年前

    我正试图在系统目录中找到一个文件。 问题是当使用

    Environment.SystemDirectory
    

    在x64机器上,我仍然得到System32目录,而不是Systemwow64目录。

    有什么想法吗?

    为了找到SysWow64,我使用“getsystemwow64目录”。(更多信息请参见: pinvoke 请注意,在非x64计算机上-结果为“0”。 希望这对别人有帮助

    4 回复  |  直到 11 年前
        1
  •  13
  •   Chris Schmich    14 年前

    使用 Environment.GetFolderPath(Environment.SpecialFolder.SystemX86)

        2
  •  11
  •   Dietrich Epp    11 年前

    使用 SHGetSpecialFolderPath 功能:

    [DllImport("shell32.dll")]
    public static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner, [Out]StringBuilder lpszPath, int nFolder, bool fCreate);
    
    string GetSystemDirectory()
    {
        StringBuilder path = new StringBuilder(260);
        SHGetSpecialFolderPath(IntPtr.Zero,path,0x0029,false);
        return path.ToString()
    }
    

    会回来的 System32 SysWow64 在x64上

        3
  •  3
  •   Ana Betts    14 年前

    你的32位程序是什么 思考 System32真的是SysWOW64吗?不要编写32位的应用程序来明确了解64位,这就是WOW64重定向的目的

        4
  •  0
  •   Computer User    10 年前

    我也有同样的问题。解决方案是在visualstudio的项目属性中将“平台目标”设置为x86,而不是AnyCPU或x64。在这种情况下,路径将是 "C:\Windows\system32" "C:\Windows\SysWOW64" File.Exists

    File.Exists(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), sFileName));
    

    或者

    File.Exists(Path.Combine(Environment.SystemDirectory, sFileName));
    

    enter image description here