VS下运行和直接双击exe运行结果不同的解决方法

时间:2022-12-14 09:19:08

先简要说一下问题背景:

1. 有一个第三方dll控件,假设该dll名为ShowMessage,该dll通过回调定期输出字符串格式的消息

2. 官方提供的dll示例程序是一个winform(C#)工程,同时提供了生成好的ShowMessage.exe文件

3. 直接运行该ShowMessage.exe,执行结果正常

4. 如果重新编译工程,无论是直接运行新生成ShowMessage.exe还是通过VS调试来运行,有时能收到dll的回调消息(即回调函数会被调用到),有时收不到

5. 我的开发环境有两台机器,一台是win7 32位,一台是win7 64位,工程都生成x86程序

6. 有时通过VS运行没有问题,但是直接双击生成的exe会有问题

7. 有时exe在64位下不行,在32位下可以

8. 如果将framework版本改一下,然后再改回来,就不行了

其实,哪怕源代码一样,在不同的环境或不同的时间段,结果都不同,没有使用多线程。

最后,发现解决方法如下:

方法一:运行exe时,右键以管理员身份运行

方法二:在工程的安全性设置中,选中“这是完全可信的应用程序”