在32位Windows操作系统上,“ Environment.SpecialFolder.SystemX86”将返回什么?

时间:2019-05-21 06:53:26

标签: c# windows c#-4.0

我有一个应会生成32位CMD进程的应用程序。

bool is64BitOS = Environment.Is64BitOperatingSystem;
Environment.SpecialFolder systemFolder = is64BitOS ? Environment.SpecialFolder.SystemX86 : 
Environment.SpecialFolder.System;
processName = Path.Combine(Environment.GetFolderPath(systemFolder),"cmd.exe");

我想知道是否需要检查OS位以处理64位和32位Windows CMD路径之间的差异

“ Environment.SpecialFolder.SystemX86”会处理这些差异,我不必担心吗?

PS:我的应用程序是使用“ AnyCPU”目标平台编译的

1 个答案:

答案 0 :(得分:1)

在32位系统上,您将获得与SpecialFolder.System相同的值,所以不,这不是必需的。您可以使用SpecialFolder.SystemX86明确获取包含32位二进制文​​件的系统文件夹。

来源:Environment.GetFolderPath代表SHGetFolderPathSpecialFolder.SystemX86映射到CSIDL_SYSTEMX86documented here则映射到32-位系统。该值是Windows 2000中引入的,因此,除非您打算在非常旧且不受支持的Windows版本(具有同样古老的.NET)上运行,否则无需进行检查。

请注意,结果仅取决于操作系统的位数,而不取决于进程的位数。 32位和64位进程将获得相同的值(但是,文件系统重定向当然意味着32位进程在访问%windir%\system32时通常会在后台访问SysWOW64)。