【问题标题】:Running Multiple Elevated Cmd Prompts through C#通过 C# 运行多个提升的 Cmd 提示
【发布时间】:2013-06-10 13:57:23
【问题描述】:

我基本上是在尝试从C:\Windows\System32\Tasks 的 Tasks 文件夹中复制所有文件,然后转移到使用 C# 选择的任何文件夹中。到目前为止,我有这个代码:

String strCmdTxt = "/k %WINDIR%\\sysnative\\cmd.exe && xcopy\"C:\\Windows\\System32\\Tasks\\*.*\" \"C:\\Users\\Blah_Blah\\Documents\\Test\\\" /e /i /h";
System.Diagnostics.ProcessStartInfo i = new System.Diagnostics.ProcessStartInfo();//("cmd.exe", strCmdTxt);
System.Diagnostics.Process p = new System.Diagnostics.Process();
i.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
i.UseShellExecute =true;
i.FileName = "C:\\Windows\\System32\\cmd.exe";
i.Verb = "runas";
p.StartInfo = i;
try{
    p.Start();
    Console.WriteLine("The folders were copied");
    p.WaitForExit();
    p.Close();
} catch (Exception e) {
    Console.WriteLine("error");
}

所以问题是这个编译但它没有产生我想要的。

我使用i.Verb 确保命令以管理员身份运行,以便它可以访问任务的计划文件。此外,我运行 %WINDIR%\\sysnative\\cmd.exe 以便 cmd 可以访问 System32 文件夹,因为 cmd 在 SysWOW64 中打开。

但由于某种原因,它的其余部分 (xcopy \"C:\\Windows\\System32\\Tasks\\*.*\" \"C:\\Users\\Kapil_Gowru\\Documents\\Test\\\" /e /i /h) 似乎没有运行。我尝试使用StreamWriter 执行此任务,因此我可以向 cmd 输出两个单独的命令,但这使我无法以管理员身份运行 cmd。

所以我想还有什么办法可以做到这一点?如果您对我的问题有任何疑问,请在此处发布,我会回复。提前致谢!

【问题讨论】:

    标签: c# windows-7 cmd admin scheduler


    【解决方案1】:

    我看不到您在启动后将命令发送到进程的位置,请尝试重定向 StandardInput 然后发送 strCmdTxt,有关使用 StandardInput 的示例,请参阅此 article p>

    虽然我不明白您为什么要尝试使用进程启动 cmd 提示符来复制文件,但您为什么不直接从 C# 使用旧的 File.Copy 进行文件复制,只需启动您的应用作为管理员/提升

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 2018-09-06
      相关资源
      最近更新 更多