none
VB.NET x86程序在System32下不能运行? RRS feed

  • 问题

  • 我用VB.Net 4.7写了个32位小程序,只有一个模块:

    Module 主模块
        Sub Main()
        End Sub
    End Module

    程序没有任何功能,完全测试用。Release生成以后,在大多数位置都可以正常运行。但是放在System32目录下以后,运行就会报错:点“是”以后会弹出帮助页面,提示我在控制面板里启用.Net 3.5,然而并没有用,启用以后还是这个错。网上翻来翻去似乎也没有人遇到过类似问题。有谁能解释一下吗?

    2017/5/9

    以下是一些试验结果:

    • 以管理员身份运行,一样的错误
    • 改成用C++写的空程序(只有一句int main(){return 0;})就可以正常运行,无论x86还是x64
    • 改成x64(仍然VB.NET)可以正常运行
    2017年5月8日 10:13

答案

  • Hi,

    感谢在MSDN论坛发帖。

    我已经重新你的问题。 我把C#语言写的winform程序放到system32下面,出现和你一样的错误。

    我个人认为system32目录是windows的核心目录,核心目录有一半是managed语言不能访问,不知道是不是这个原因导致启动程序失败,下面的图就是描述整个windows产品的调用范围。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年5月9日 6:33
    版主

全部回复

  • 你想得太简单了……这么简单的方法我当然早就试过
    2017年5月8日 22:46
  • Hi,

    感谢在MSDN论坛发帖。

    我已经重新你的问题。 我把C#语言写的winform程序放到system32下面,出现和你一样的错误。

    我个人认为system32目录是windows的核心目录,核心目录有一半是managed语言不能访问,不知道是不是这个原因导致启动程序失败,下面的图就是描述整个windows产品的调用范围。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年5月9日 6:33
    版主
  • 似乎没有那么简单。之前生成的目标CPU是x86,改成x64以后就正常了……但是C++无论x86还是x64都能运行。这又怎么解释
    2017年5月9日 7:22
  • Any CPU的版本是有问题的,x64就正常的,测试是对的。 你电脑是64位的吧? 这里面可能涉及到system32里面存的是32位的系统,还是64位系统。

    我觉得system32目录里面应该是64位的DLL.


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年5月9日 7:35
    版主
  • DLL搜索路径顺序的问题。32位的程序首先搜程序所在目录,之后才会去当前目录,之后才会搜系统目录。在程序所在目录或者当前目录下找到不兼容的DLL版本(比如64位的DLL)会出这个问题。


    Visual C++ MVP

    2017年6月6日 4:08
    版主