Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C/.NetCore为Powershellscript签名_C#_Powershell_.net Core - Fatal编程技术网

C# 使用C/.NetCore为Powershellscript签名

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具有检查更新的开关 现

对于我的复杂系统,我正在寻找一种不使用powershell而是使用C/.NetCore来签署powershellscript的方法

下面是Powershell版本:

我当前的解决方案启动Powershell控制台时使用

为什么我要用C而不是Powershell签名

我的系统是一个内部网服务 用户可以从应用程序中的代码片段编译脚本,并选择其他安装文件 现在,脚本已签名,并与安装文件一起编译到一个exe C控制台项目中—在运行时使用dotnet编译 此exe可由用户控制。exe具有检查更新的开关 现在,此exe更新通过wsus分发并到达用户计算机,并使用脚本安装安装文件。 所有这一切都是一个很好的系统,但如果我不必先保存脚本来签名,那就更好了

进程启动=>powershell

正如您在上面所看到的,我不是在寻找一个做我的家庭作业的人,而是一个经验丰富的人,他可以告诉我如何在不使用powershellpipe的情况下使用C签署脚本

非常感谢
致以最诚挚的问候

现在,我已经投入了更多的时间并了解了底层技术,我在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)