【问题标题】:How to run command in the process which is executed with admin rights?如何在以管理员权限执行的进程中运行命令?
【发布时间】:2011-11-29 00:27:29
【问题描述】:

我想创建自签名证书并通过 c# 程序安装它。 我使用 ma​​kecert 来制作证书,我以 administrator 身份运行它并在 ProcessStartInfo.argument 中传递命令,但该命令不执行什么代码的问题?

这是我的代码:

 public void Createasnewadmin()
 {

        ProcessStartInfo info = new ProcessStartInfo();

        Process p = new Process();          

        info.FileName = Application.StartupPath+@"\makecert.exe";

        info.UseShellExecute = true;

        info.Verb = "runas"; // Provides Run as Administrator

        info.Arguments = "makecert testCert_admin_check.cer";

        //i just create sample certificate but it doesn't get created
        //The problem is above line the command doesn't get execute 

        p.StartInfo=info;

        p.Start()

  }

请告诉我问题出在哪里,不是以管理员身份执行?或者要执行的命令没有正确传递?

我认为它是以管理员身份执行的,因为我自己单击是按钮以管理员身份执行,这是由 windows 提示的

为什么命令没有执行?还有其他方法吗?

【问题讨论】:

标签: c# .net ssl user-permissions makecert


【解决方案1】:

我相信您需要提供凭据才能在管理员模式下调用进程。

用户名 = “管理员”,密码 = ,

【讨论】:

  • 我确实验证了管理员权限没有问题,因为我确实使用相同的代码运行 cmd 并且它确实以管理员身份正常运行,但是我无法通过我的程序将命令传递给它
【解决方案2】:

查看您的代码,我怀疑您遇到了错误,因为您的参数不正确。

你行

info.Arguments = "makecert testCert_admin_check.cer"; 

应该是

info.Arguments = "testCert_admin_check.cer"; 

【讨论】:

  • 嘿,谢谢,这是现在的问题,我想执行两个命令是否可以如果是这样怎么办?我尝试了下面的方法但没有工作 info.Arguments = "-n \"CN=My_Root_CA_1_admin_try ,O=Organization,OU=Org Unit,L=San Diego,S=CA,C=US\" -pe -ss my -sr LocalMachine -sky exchange -m 96 -a sha1 -len 2048 - r My_Root_CA_1_admin_try.cer" + "&& certutil.exe -f -addstore Root My_Root_CA_1_admin_try.cer";我想运行此命令将证书存储在受信任的根目录中吗?
  • 太好了,很高兴为您解决了问题。我认为您的下一点可能更适合作为另一个问题。但我可能会创建一个带有几个参数的批处理文件,然后从 C# 代码执行批处理文件。
猜你喜欢
  • 2019-10-15
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
相关资源
最近更新 更多