微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在Sn.exe中自动输入密码

我需要创建post build事件来执行以下操作:
sn -i MyKey.pfx MyKeyContainerName
tlbimp $(ConfigurationName)\MyCom.tlb /out:$(ConfigurationName)\NETMyCom.dll /keycontainer:MyKeyContainerName
sn -d MyKeyContainerName

当Visual Studio执行第一个语句时,它需要一个密码并等待用户指定并失败.

Microsoft (R) .NET Framework Strong
Name Utility Version 2.0.50727.42
copyright (c) Microsoft Corporation.
All rights reserved.

Enter the password for the PKCS#12 key
file: Failed to parse the PKCS#12
blob in mykey.pfx — The handle is
invalid.

我尝试使用sn命令行参数指定密码,但我看不到这样做的方法.

请帮忙.

问候,
希尔米.

解决方法

如果像我一样,你没有使用TFS或MSBUILD来构建,那么至少有两种方法

a)从脚本运行sn.exe,并将密码写入stdin

请参阅here获取C#示例:

注意:使用.NET4版本的sn.exe似乎不可能将其作为外部进程执行(至少在Windows XP上),并将密码写入stdin(我尝试用C#进行python,sn.exe似乎只需退出而无需等待密码输入).

b)使用已安装的pfx使用sn.exe重新签名密码.

如果您已经安装了pfx文件,那么您可能知道容器名称(通常Visual Studio使用类似VS_KEY_ABAB1234ABAB1234的名称)

如果像我一样,您不知道或记住容器名称,那么只需重新安装pfx文件

sn -i myPfxFile VS_KEY_ABAB1234ABAB1234

sn.exe会提示您输入密码,因为它会在pfx文件中安装证书.

然后,您可以使sn.exe重新签名您的程序集,而不提示输入密码:

sn -Rca myAssembly.dll myVSkey

以上内容可以在构建脚本中使用,因为不需要交互:-)

请记住检查签名是否真的有效:

sn -v myAssembly.dll

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐