我有一个应会生成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”目标平台编译的
答案 0 :(得分:1)
在32位系统上,您将获得与SpecialFolder.System
相同的值,所以不,这不是必需的。您可以使用SpecialFolder.SystemX86
明确获取包含32位二进制文件的系统文件夹。
来源:Environment.GetFolderPath
代表SHGetFolderPath
,SpecialFolder.SystemX86
映射到CSIDL_SYSTEMX86
,documented here则映射到32-位系统。该值是Windows 2000中引入的,因此,除非您打算在非常旧且不受支持的Windows版本(具有同样古老的.NET)上运行,否则无需进行检查。>
请注意,结果仅取决于操作系统的位数,而不取决于进程的位数。 32位和64位进程将获得相同的值(但是,文件系统重定向当然意味着32位进程在访问%windir%\system32
时通常会在后台访问SysWOW64
)。>