问题标签 [sn.exe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1551 浏览

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

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

非常感谢您的帮助。我想先在这里表示感谢。

0 投票
1 回答
1359 浏览

.net - 在 NETFX 4.0 工具之外运行 sn.exe 时遇到问题

有没有人知道为什么 .net 4.0 版本sn.exe在外面运行时会崩溃C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\ ?(使用 Windows XP,32 位)

Visual Studio 2010 工作得很好,sn 在 NETFX 4.0 工具中工作(直接调用或在 PATH 上调用)。

.net 3.5 版本(来自 ..\Bin)工作正常并且可以移动。

我只是想获得一个自动构建,但似乎 sn.exe 需要存在于它所在的位置......可能是这样吗?我错过了一些明显的东西吗?

0 投票
1 回答
1175 浏览

.net - 签署混合代码汇编

我有一个用 C++ 托管和非托管编写的混合组件。为了签署这个程序集,我使用延迟签名和以下构建后事件:

这在我自己的 PC(VS2010 英语,Windows XP 32Bit)上没有任何问题。

如果我将这个项目转移到另一台 PC(VS2010 德语,Win7 32 位)上,此构建步骤将失败并显示错误消息。

可能是什么原因?

编辑:在命令提示符下启动该工具,它说:

它说 dll 没有强名称。我不明白,因为同一个项目在我的第一台机器上构建没有问题。

0 投票
1 回答
709 浏览

.net - 运行 sn.exe 需要哪些 windows SDK 部件

我想运行 sn.exe 以便能够在服务器中运行延迟签名的项目。如果我安装整个 windows SDK 一切运行顺利,但需要 SDK 的哪个部分?我在问,因为整个下载是 460Mb,并且可能安装了我不需要的东西。

0 投票
1 回答
786 浏览

c# - 如何在 ClickOnce 应用程序的无签名装配项目中设置 LARGEADRESSAWARE?

我有一个带有接下来两个编译后命令的应用程序:

并且工作正常。

但是,当我发布到服务器时,ClickOne 应用程序没有错误,但是当我尝试在客户端中安装时,文件的哈希值与清单中计算的值不同。

我尝试使用下一个命令:

但不起作用,它显示下一条消息:

app.exe 不代表任何强名称程序集。

我想这是因为我所有的项目都有带有错误值的“签署程序集”选项。在使用 LARGEADDRESSAWARE 之前,ClickOnce 应用程序运行良好。

有必要为所有项目设置具有真值的“签署程序集”选项,或者有什么方法可以为该选项使用具有假值的 LARGEADDRESSAWARE?

编辑:

Mark Sowul 的解决方案工作正常:我还在 AfterBuild 中添加了下一行,以检查 AfterCompile 是否正常工作

0 投票
2 回答
14147 浏览

.net - 强名称 sn.exe:无法安装密钥对 -- 对象已存在

我的机器上有同一个项目的 2 个不同版本。一个来自代码主干,另一个来自代码分支。这些项目使用 .pfx 密钥来启用强命名。当我第一次尝试编译项目的主干版本时,我收到以下错误:

无法导入以下密钥文件:sgKey.pfx。密钥文件可能受密码保护。要更正此问题,请尝试再次导入证书或手动将证书安装到具有以下密钥容器名称的强名称 CSP:VS_KEY_45891C38BC1BB345

为了解决这个问题,我使用 sn.exe 和以下命令:

sn -i sg Key.pfx VS_KEY_45891C38BC1BB345

这解决了主干项目的问题,然后愉快地构建。

但是,当我尝试构建项目的分支版本时,我收到相同的初始错误(具有相同的密钥容器名称),并且当我尝试使用 sn.exe 安装证书时(不足为奇)给出以下错误:

安装密钥对失败——对象已存在

这是有道理的,因为我在 sn 命令上使用了相同的infile容器,但我想了解的是:

  1. 如果此对象已经存在,为什么项目无法构建,因为它似乎已经安装了证书。
  2. 我如何解决这个问题(例如,我可以卸载然后重新安装吗?如果可以,如何解决?)
0 投票
0 回答
246 浏览

c# - 生成密钥对并存储在 Keystore 中

我目前正在基于这篇文章开发一个系统:

http://www.codeproject.com/Articles/4940/Using-XML-Digital-Signatures-for-Application-Licen

但是,在文章中,他使用 sn.exe 生成密钥对并将其存储到密钥容器中。

我想在 Windows Server 2012 机器上执行此操作,无法访问 sn.exe,而且我似乎无法找到执行此操作的方法,任何人都可以建议一个适用于 server 2012 的工具吗?

干杯

0 投票
1 回答
1230 浏览

.net - 无法在 msbuild 脚本文件中使用 sn.exe 对程序集进行签名

我使用此代码在 msbuild 脚本文件中签署程序集:

但我有错误:错误 MSB3073:命令“C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\sn.exe -RD:\Program\Exchange.dll”以代码 1 退出

之后,我在 Visual Studio 命令提示符中执行了相同的命令,以检查它是否适用于命令提示符:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\sn.exe -RD:\Program\Exchange.dll 但之后我收到此消息:

选项 -R 接受 2 个参数

如何在 msbuild 脚本文件中正确签署程序集?

0 投票
1 回答
401 浏览

msbuild - MSB3073 命令以 1 退出

在签署 dll 文件命令时成功执行但对于 .exe 文件我收到错误“命令以 1 退出”。

exec Command="SN-R demo.dll ..\key.snk" exec Command="SN-R demo.exe ..\key.snk"

请帮我解决这个问题

0 投票
1 回答
199 浏览

validation - 如何撤消 sn.exe -Vr *

我需要调试 EntityFramework 以找出它不接受我的连接字符串的原因。为了做到这一点,我不得不使用 sn.exe -Vr * 命令,因为禁用一两个程序集不起作用。

所以现在我想将所有内容恢复为默认值,找到了问题,但现在我的计算机上根本没有任何强名称验证。

那么如何使用 sn 命令将强名称验证恢复为默认设置?