我有一个应用程序应该生成 32 位 CMD 进程。
bool is64BitOS = Environment.Is64BitOperatingSystem;
Environment.SpecialFolder systemFolder = is64BitOS ? Environment.SpecialFolder.SystemX86 :
Environment.SpecialFolder.System;
processName = Path.Combine(Environment.GetFolderPath(systemFolder),"cmd.exe");
我想知道是否需要检查操作系统位数来处理 64 位和 32 位 Windows CMD 路径之间的差异
或
“Environment.SpecialFolder.SystemX86”会处理差异并且我不必担心吗?
PS:我的应用程序是使用“AnyCPU”目标平台编译的
最佳答案
在 32 位系统上,您将得到与 SpecialFolder.System
相同的值。 ,所以不,这是没有必要的。您可以使用SpecialFolder.SystemX86
明确获取包含 32 位二进制文件的系统文件夹。
来源:Environment.GetFolderPath
代表们 SHGetFolderPath
,与 SpecialFolder.SystemX86
映射到CSIDL_SYSTEMX86
,即documented here映射到%windir%\system32
在 32 位系统上。该值是在 Windows 2000 中引入的,因此除非您计划在非常旧且不受支持的 Windows 版本(以及同样古老的 .NET 版本)上运行,否则无需检查。 p>
请注意,结果仅取决于操作系统的位数,而不取决于进程的位数; 32 位和 64 位进程将返回相同的值(但是,当然,文件系统重定向意味着 32 位进程在访问 SysWOW64
时通常会在后台访问 System32
)。
关于c# - 'Environment.SpecialFolder.SystemX86' 在 32 位 Windows 操作系统上会返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56232664/