我们有一个在 .NET 2.0 中创建的 Windows 服务。我已将平台目标设置为 X86,并将安装程序设置为 X86。它引用的项目设置为 ANYCPU。
我们在 64 位服务器上运行它。它必须是 32 位的,因为它访问的 ODBC 驱动程序是 32 位的,如果从 64 位应用程序访问,它们会严重崩溃。
我已经看到在 64 位机器上,某些进程旁边有 *32 表示 32 位,但是我创建的专门针对 32 位 (X86) 的测试似乎并非如此如果真的是那样的话。我们正在运行的服务没有在服务名称旁边显示 *32。
对此有什么想法吗?如果它不是作为 32 位 (X86) 运行的,那么我很惊讶,因为我强制构建是这样的。
更新,我们发现它以 64 位运行,即使服务项目被迫以 X86 模式构建。什么会导致这种情况?
最佳答案
您可以使用 IntPtr.Size
(MSDN 文档)。如果以 32 位运行,这将返回 4,如果以 64 位运行,则返回 8。
关于c# - 检查我的程序是否在 64 位机器上以 32 位模式运行,如果以 64 位运行 - 我如何强制它为 32 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7759715/