c# - 'Environment.SpecialFolder.SystemX86' 在 32 位 Windows 操作系统上会返回什么?

标签 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");

我想知道是否需要检查操作系统位数来处理 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/

相关文章:

c# - 没有为类型 'System.Int64' 和 'System.Decimal' 定义二元运算符 Equal

c# - 适用于 .Net 的新 Relic 插件 SDK

android - Flutterfire 配置无法以任何可能的方式工作

MySQL Connector/C 尝试使用 localhost 而不是 127.0.0.1 进行连接时不支持请求的图元文件操作

c# - DbDataReader 错误 : Invalid attempt to call Read when reader is closed

c# - 如何允许用户在 C# 应用程序中定义财务公式

c# - 十进制 ToString F02 变成逗号

c++ - Visual C++ 中的线程

c# - 在 C# 中检查是否为字符串格式的条件

c# - 执行 Windows Azure Web 作业