none
64位版本的ildasm.exe运行错误 RRS feed

  • 问题

  • 64位版本的ildasm.exe运行错误


    你好:
      我在运行ildasm.exe时发生异常,情况如下:

    ---------------------------
    ildasm.exe - 应用程序错误
    ---------------------------
    应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。 
    ---------------------------
    确定   
    ---------------------------

    发生异常的ildasm.exe是.net4.0下的64位版本,具体路径如下
    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\ildasm.exe

    我试过运行32位版本的ildasm.exe,没有问题
    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\ildasm.exe

    我的操作系统是Win2008 R2,禁用了虚拟内存,并且在内存中虚拟了R盘,系统和用户的临时目录都放在R盘中

    想请问下,这是什么原因导致的错误,怎么能够修复?

    由于我是需要使用Dotfuscator,它默认是调用ildasm.exe的64位版本,我不清楚如何能在Dotfuscator设置其调用32位的ildasm,因此只能求助如何能解决64位ildasm运行异常(无法启动)的问题

    2013年5月13日 10:30

答案

  • 这个问题,我觉得你可以先ProcMon一下程序启动过程,看看到哪一步出错了?

    我猜测可能是64位exe启动过程中错尝试Load 32位dll,也许可以通过改变路径来解决。

    也可能是你的exe或dll文件根本就是坏掉的,这一点,可以通过数字签名完整性来确认。

    当然,还可能是你自己提到的tmp目录的变更,这可以通过恢复默认路径来排除。

    至少,在我这边的Win7环境里,运行x64的ildasm.exe是正常的,如下图:



    2013年5月14日 1:37

全部回复

  • 这个问题,我觉得你可以先ProcMon一下程序启动过程,看看到哪一步出错了?

    我猜测可能是64位exe启动过程中错尝试Load 32位dll,也许可以通过改变路径来解决。

    也可能是你的exe或dll文件根本就是坏掉的,这一点,可以通过数字签名完整性来确认。

    当然,还可能是你自己提到的tmp目录的变更,这可以通过恢复默认路径来排除。

    至少,在我这边的Win7环境里,运行x64的ildasm.exe是正常的,如下图:



    2013年5月14日 1:37
  • 你好:

       你所提到的
          “我猜测可能是64位exe启动过程中错尝试Load 32位dll,也许可以通过改变路径来解决。   应该如何操作,在哪更改哪项路径?

       我看了下ildasm.exe的签名,没有问题。
       将temp路径修改回C盘和启用虚拟内存,运行时还是抛出异常。

      我用ProcMon监视了运行时的情况并截了图(这里好象无法上传附件),能否帮我看看是否可以找到原因。

    2013年5月21日 6:57
  • 看这截图,像是VCRuntime问题(msvcr100.dll)

    你看看你系统里有这个dll吗?是x64还是x86的?

    我试着rename了我的这个x64的msvcr100.dll,就出跟你一样的报错了

    • 已编辑 Finy 2013年5月21日 10:24
    • 已建议为答案 Finy 2013年5月21日 10:25
    2013年5月21日 7:50