gpt4 book ai didi

c# - PROCESSOR_ARCHITECTURE 在某些 32 位进程中返回 AMD64

转载 作者:行者123 更新时间:2023-11-30 12:17:09 26 4
gpt4 key购买 nike

我遇到了一个奇怪的场景,其中一个 32 位进程声称其 PROCESSOR_ARCHITECTURE 是 AMD64,导致根据该标志做出决策的组件出现故障。

我将其分离为以下步骤:

  • 在 VS2010 中,创建一个库项目
  • 在项目属性/调试选项卡中,将启动外部程序设置为 VS exe(例如 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe)
  • 执行 Ctrl-F5 运行,启动另一个 VS 实例
  • 在第二个实例中,创建一个控制台应用程序并粘贴以下代码

主要内容:

Console.WriteLine(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"));
Console.ReadLine();
  • 现在运行控制台应用

它显示 AMD64,即使它是 32 位进程(控制台应用程序的默认设置,每个build设置)。

问题:其他人是否也可以复现,如果可以,您能解释一下吗?

注意:如果你很好奇,我以这种方式运行 VS 的原因是我正在为第二个实例使用实验性配置单元

更新:请注意,在我的真实场景中,我并没有自己查找这个环境变量。相反,我使用一个组件 (SQLCE) 来查找它并依赖它是否正确。

最佳答案

这并没有直接回答你的问题,但你为什么不简单地测试 IntPtr.Size 的值呢?如果它是 4 那么你就是 32 位,如果它是 8 那么你就是 64 位。

.NET 框架 4 也有 Is64BitProcessIs64BitOperatingSystem属性,这肯定是前进的方式......

关于c# - PROCESSOR_ARCHITECTURE 在某些 32 位进程中返回 AMD64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4152294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com