c# - 检查我的程序是否在 64 位机器上以 32 位模式运行,如果以 64 位运行 - 我如何强制它为 32 位

标签 c# windows-services .net-2.0 x86

我们有一个在 .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/

相关文章:

exception - .NET 2.0 与 .NET 4.0 加载错误

timezone - Windows Embedded CE 6.00 无法运行 Net Compact Framework 3.5 应用程序

c# - 无法在 Android 9,10 Xamarin 上获得媒体播放器声音

c# - 如何向 SonarQube 添加单元测试覆盖率?使用 Azure-DevOps 管道

c# - System.Diagnostics.Process.Start 奇怪的行为

c# - Windows 服务未在 C# 中写入其日志文件

c# - 将多个列表绑定(bind)到 DataGridView

c# - 在选择设计模式方面需要帮助

asp.net-mvc - Web 应用程序 ASP.NET MVC 的调度程序

f# - 编写轮询 Windows 服务