我对这个 C# Visual Studio 编程环境完全陌生,但我需要完成一项任务。如果我的问题看起来很愚蠢,我很抱歉。但我真的不明白这个网站或网上其他网站上的其他帖子在解释什么。我需要一步一步的指南来完成最后一步来完成我的任务。
我收到了一个使用 Visual Studio 2008 编写的名为 MCC 的应用程序。但是,由于 DEP 的问题,该应用程序无法在 Window Vista 中正常运行。MCC 具有显示来自 IP 摄像机的视频的功能。这需要 AxGif89aLite 的 ActiveX 控件。但是,Vista 中的 DEP 默认情况下是启用的。PE 标头中的标志 IMAGE_DLLCHARACTERISTICS_NX_COMPAT 不允许使用此控件。已经运行了几次测试并确定这是问题所在。
从在线文章 http://blog.dyadica.net/archives/data-execution-prevention-workaround,他们建议我需要将以下内容添加到 MCC 后期构建事件中。
调用 $(DevEnvDir).. \tools\vsvars32.bat
editbin.exe /NXCOMPAT:NO $(C:\Program Files\Aerocut\MCC\MCC2.exe)
所以,我添加了这个并重建了 MCC 解决方案文件。然后,我无法得到最后一步要求我做的事情。
请注意,如果您在 Visual Studio 中对二进制文件进行签名,则在二进制文件签名后的构建后步骤中翻转 IMAGE_DLLCHARACTERISTICS_NX_COMPAT 标志将导致程序集无法通过强名称验证。要解决此问题,请将您的二进制文件作为后期构建步骤的一部分。为此,请使用 Windows SDK 中的 SN.EXE。
我真的很困惑这个签名二进制文件是什么。
- 根据我在谷歌上搜索的信息,签署应用程序就是获得该程序的证书,这样它就更安全了,我在这里吗?
- 我的电脑里有SN.EXE。但是,如何将我的二进制文件作为构建后步骤进行签名?二进制文件应该是我编译的执行文件吧?
我用重建的安装文件重新安装了 MCC。它仍然给我以下错误:
无法获取“AxGif89aLite”控件的窗口处理程序。不支持无窗口 ActiveX 控件。
非常感谢您的帮助。我想先在这里表示感谢。