C# 运行命令行(cmd),该命令行要求;安全信息“;
我想在c#程序中运行命令行C# 运行命令行(cmd),该命令行要求;安全信息“;,c#,windows,cmd,driver,C#,Windows,Cmd,Driver,我想在c#程序中运行命令行pnputil。该程序需要安装USB驱动程序。 我知道如何在c#程序中运行cmd,但我有一个不同的问题: 我要安装的驱动程序没有windows的权限。 如果我通过“设备管理器->更新驱动程序”安装驱动程序并选择驱动程序的路径,我会从windows收到“安全消息”,即“windows无法验证此驱动程序软件的发布者”,并让我选择是否安装驱动程序(当然,如果我选择安装-安装成功) 如果我从cmdpnputil-a运行命令,我也会收到这个消息,我可以安装驱动程序 但是当我试图通
pnputil
。该程序需要安装USB驱动程序。
我知道如何在c#程序中运行cmd,但我有一个不同的问题:
我要安装的驱动程序没有windows的权限。
如果我通过“设备管理器->更新驱动程序”安装驱动程序并选择驱动程序的路径,我会从windows收到“安全消息”,即“windows无法验证此驱动程序软件的发布者”,并让我选择是否安装驱动程序(当然,如果我选择安装-安装成功)
如果我从cmdpnputil-a
运行命令,我也会收到这个消息,我可以安装驱动程序
但是当我试图通过c程序运行命令时——程序运行,但驱动程序没有安装(我也没有收到此消息)
我的c#代码:
System.Diagnostics.Process进程=新的System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo=新系统.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName=“cmd.exe”;
startInfo.Arguments=@“/C Pnputil-a”;
process.StartInfo=StartInfo;
process.Start();
我该怎么做?您可以尝试使用runas
动词运行cmd:
startInfo.Verb = "runas";
startInfo.UseShellExecute = true;
此参数导致权限提升。在资源管理器中使用“以管理员身份运行”也可以达到同样的效果。您的问题更多地是关于安装未签名的驱动程序 请尝试以下步骤: 以管理员身份打开命令提示符,然后键入:
bcdedit -set TESTSIGNING ON
有关测试签名的更多信息,请参阅。进行测试签名可能会将水印作为测试放在桌面waterpaper中我知道这很旧,但我想分享我的解决方案,以防它能帮助其他人 我的具体场景是,我想在Windows 7 Home Premium 64位上的驱动程序存储中添加一个未签名的驱动程序包 与OP一样,如果我使用“以管理员身份运行”的命令提示符执行
pnputil-a
,这也会按预期工作(意味着我收到了安全警告,并且驱动程序包被添加到驱动程序存储中)
但是,如果我试图从C#内部调用pnputil,我永远无法获得安全警告,并且驱动程序包也没有添加到驱动程序存储中。我尝试过使用各种选项(例如Verb=“runas”、UseShellExecute=true等),文件名设置为“pnputil”或“cmd”
最终,对我有用的是创建一个简单的批处理文件,其中包含以下内容:
%windir%\sysnative\pnputil /a <path_to_inf>
%windir%\sysnative\pnputil/a
然后,我的C#应用程序将调用此批处理文件,如下所示:
Process proc = new Process();
proc.StartInfo.FileName = "<path_to_bat_file>";
proc.StartInfo.Verb = "runas";
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
processproc=newprocess();
proc.StartInfo.FileName=“”;
proc.StartInfo.Verb=“runas”;
proc.StartInfo.UseShellExecute=true;
proc.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
proc.StartInfo.CreateNoWindow=true;
proc.Start();
首先会提示用户,因为我要求以提升的权限运行,然后是预期的安全警告。然后,驱动程序包将按预期添加到驱动程序存储中
如果这不符合预期,您可以在批处理文件中最后一个命令后的新行上添加“暂停”(不带引号),并从C代码中删除WindowsStyle和CreateNoWindow行,以查看命令提示符上发生的情况。您的软件正在为您提供安全信息?我在哪里可以买到这件奇妙的东西?:)@user1994587如果您共享该安全消息,它将加快查找解决方案的速度。psst。这是
还是不是钢
和消息
不是按摩
<代码>按摩
是对皮肤/身体施加压力,这就是为什么戴维格在评论中开玩笑的原因。另外。
Process proc = new Process();
proc.StartInfo.FileName = "<path_to_bat_file>";
proc.StartInfo.Verb = "runas";
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.CreateNoWindow = true;
proc.Start();