【问题标题】:My x86 Exe runs as x64 when installed as a Windows Service当作为 Windows 服务安装时,我的 x86 Exe 以 x64 运行
【发布时间】:2012-08-28 06:03:54
【问题描述】:

我有一个服务器控制台应用程序,如果您指定 /CONSOLE 命令行,我将其设计为作为控制台应用程序运行,但同时允许使用 InstallUtil 将其自身安装为 Windows 服务。

我的问题是当我作为控制台应用程序运行时,它正确地作为 x86 进程启动并且一切正常。但是,一旦我将它安装为 Windows 服务,它就会作为 x64 进程启动,因此某些依赖 x86 的功能会失败。

我的项目配置设置为 x86,并且所有引用的组件都设置为构建为 x86。实际项目本身的配置设置为 x86,目标设置为 x86。有没有其他人对可能导致这种情况的原因提出建议?

谢谢, 加里

【问题讨论】:

    标签: c# windows-services x86 64-bit


    【解决方案1】:

    确保您使用的是正确版本 (X86) 的 InstallUtil。有关 x86 和 x64 版本之间差异的说明,请参阅 here

    【讨论】:

    • 嗨,David,是的,我确实使用了适当的 InstallUtil.exe。我突然注意到它在任务管理器中显示 *32,但是当使用 Visual Studio 中的附加到进程进行连接时,它显示为 x64 类型。不确定这是否意味着它以 32 位或 64 位运行。
    【解决方案2】:

    对于 Google 员工:Why would a .NET EXE, compiled as x86, run as x64? 帮助我解决了这样的问题。

    另外,您可以使用dumpbin /headers program.exe 查看标题中的内容。寻找14c machine (x86)8664 machine (x64)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-26
      相关资源
      最近更新 更多