如何使用 Windows SDK 中的 sn.exe 对二进制文件进行签名作为构建后步骤的一部分?

发布于 2024-09-27 13:22:53 字数 1250 浏览 5 评论 0原文

我对这个 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。

我真的很困惑这个签名二进制文件是什么。

  1. 从我谷歌搜索到的信息来看,签署应用程序就是获得该程序的证书,以便它更安全,我在这里吗?
  2. 我的电脑里有SN.EXE。但是,如何在构建后步骤中签署我的二进制文件?二进制文件应该是我编译的执行文件吧?

我使用重建的安装文件重新安装了 MCC。它仍然给我以下错误:

无法获取“AxGif89aLite”控件的窗口处理程序。不支持无窗口 ActiveX 控件。

非常感谢您的帮助。我首先在此先向大家表示感谢。

I am a totally unfamiliar in this C# Visual Studio programming environment but I am required to finish a task.
I am sorry if my question seems silly. But I really could not understand what other posts on this site or other site on the net explaining. I need a step by step guide to do this final step to accomplish my task.

I have been given an application called MCC written using Visual Studio 2008. However, this application could not run properly in Window Vista due to the issue of DEP. MCC has a function to display video from an IP camera. This required the ActiveX control of AxGif89aLite. However, DEP in Vista is by default enabled. The flag IMAGE_DLLCHARACTERISTICS_NX_COMPAT in PE header do not allow this control to be used. Several tests have been run and identified this is the problem.

From an article online,
http://blog.dyadica.net/archives/data-execution-prevention-workaround, they suggest I need to add the below to MCC post build event.

call $(DevEnvDir).. \tools\vsvars32.bat
editbin.exe /NXCOMPAT:NO $(C:\Program Files\Aerocut\MCC\MCC2.exe)

So, I add this and rebuild the MCC solution file. Then, I cannot get what this last step required me to do.

Please note that if you sign the binary in Visual Studio, flipping the IMAGE_DLLCHARACTERISTICS_NX_COMPAT flag in the post build step after the binary has been signed will result in an assembly that will fail strong name validation. To work around this sign your binary as part of the post build steps.
To do this, use SN.EXE from the Windows SDK.

I am really confused what is this signing binary.

  1. From information that I googled, signing an application is getting a certificate for the program so that it is more secured, am I right here?
  2. I got the SN.EXE in my computer. But, how do I sign my binary as post build step? The binary should be my compiled execution file right?

I reinstalled the MCC with the rebuilt setup file. It still give me the following error:

Unable to get the window handler for the 'AxGif89aLite' control. Windowless ActiveX controls are not supported.

Help is very much appreciated. I would like to express thank you in advance here first.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酷遇一生 2024-10-04 13:22:53

如果您尚未在编译过程中签署可执行文件,则无需担心。

If you're not signing the executable already as part of the compilation then you don't need to worry about it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文