C# 使用C/.NetCore为Powershellscript签名
对于我的复杂系统,我正在寻找一种不使用powershell而是使用C/.NetCore来签署powershellscript的方法 下面是Powershell版本: 我当前的解决方案启动Powershell控制台时使用 为什么我要用C而不是Powershell签名 我的系统是一个内部网服务 用户可以从应用程序中的代码片段编译脚本,并选择其他安装文件 现在,脚本已签名,并与安装文件一起编译到一个exe C控制台项目中—在运行时使用dotnet编译 此exe可由用户控制。exe具有检查更新的开关 现在,此exe更新通过wsus分发并到达用户计算机,并使用脚本安装安装文件。 所有这一切都是一个很好的系统,但如果我不必先保存脚本来签名,那就更好了 进程启动=>powershell 正如您在上面所看到的,我不是在寻找一个做我的家庭作业的人,而是一个经验丰富的人,他可以告诉我如何在不使用powershellpipe的情况下使用C签署脚本 非常感谢C# 使用C/.NetCore为Powershellscript签名,c#,powershell,.net-core,C#,Powershell,.net Core,对于我的复杂系统,我正在寻找一种不使用powershell而是使用C/.NetCore来签署powershellscript的方法 下面是Powershell版本: 我当前的解决方案启动Powershell控制台时使用 为什么我要用C而不是Powershell签名 我的系统是一个内部网服务 用户可以从应用程序中的代码片段编译脚本,并选择其他安装文件 现在,脚本已签名,并与安装文件一起编译到一个exe C控制台项目中—在运行时使用dotnet编译 此exe可由用户控制。exe具有检查更新的开关 现
致以最诚挚的问候现在,我已经投入了更多的时间并了解了底层技术,我在GitHub上找到了Microsoft代码中的解决方案 到目前为止,在stackoverflow上也有人声称这是不可能的 这就是他们是如何做到的 在此文件中,您可以找到具有以下功能的signaturehelper类:
internal static Signature SignFile(SigningOption option,
string fileName,
X509Certificate2 certificate,
string timeStampServerUrl,
string hashAlgorithm)
对不起,如果有人介意的话,我很快就找到了解决办法。至少现在我已经分享了
编辑:
由于基础函数的原因,文件仍必须保存
第一因此优势是微乎其微的
我认为不可能像Q&A中所说的那样直接从C实现。相反,我认为您需要继续使用powershell,但您可以使用类似于使您的生活更轻松的东西,而不是手动操作。谢谢您的想法,但这必须是可能的。因为Set Authenticode是用C语言编程的。它使用System.Security.Cryptography.X509证书和时间戳服务器和HashAlgorithm这些我可以找到的涉及的类和方法,现在我正在寻找它们所在的命名空间;-SignatureHelper.GetSignaturefilePath,null;SignatureHelper.SignFileoption、文件路径、证书、时间戳服务器、\u哈希算法;谢谢你关于CliWrap的建议,这是一个非常好的建议。
process.start
internal static Signature SignFile(SigningOption option,
string fileName,
X509Certificate2 certificate,
string timeStampServerUrl,
string hashAlgorithm)