【问题标题】:Making Processes inside C# to run as administrator [duplicate]在C#中制作进程以管理员身份运行[重复]
【发布时间】:2019-10-05 18:02:21
【问题描述】:

我在 CMD 中使用 attrib 命令制作了一个删除病毒快捷方式的应用程序,我需要管理员权限才能执行该命令。

目前我无法通过整个程序或流程本身来做到这一点。 下面是一段需要UAC的代码:

private void Button2_Click(object sender, EventArgs e)
{
    string Disktype = null;
    Disktype = ListBox1.GetItemText(ListBox1.SelectedItem); ;
    if (Disktype.Contains("C:") == true)
    {
        MessageBox.Show("You selected C:");
    }
    else
    {
        String Message = "Cleaning" + Disk.Diskvolume + "Are you Sure?";
        String Title = "Cleaning now";
        MessageBoxButtons buttons = MessageBoxButtons.YesNo;
        DialogResult result = MessageBox.Show(Message, Title, buttons);
        if (result == DialogResult.Yes)
        {
            String ShowFiles = "attrib -h -r -s /s /d" + Disktype + "*.*";
            String RemoveVirus = "del" + Disktype + "*.lnk";
            System.Diagnostics.Process.Start("CMD.exe", ShowFiles);
            System.Diagnostics.Process.Start("CMD.exe", RemoveVirus);
            MessageBox.Show("Cleaning");
            System.Diagnostics.Process.Start(Disktype);
            Close();
        }
        else
        {
            MessageBox.Show("Cleaning done");
            Close();
        }
    }

如您所见,我将ShowFilesRemoveVirus 直接设置为cmd,但我无法让它们以管理员身份运行。

整个 C# 应用程序需要它还是只需要 Process.Start 应用程序?

【问题讨论】:

  • 您知道您应该使用System.IO.PathSystem.IO.FileSystem.IO.Drive 来完成这一切。无需调用命令提示符来进行文件操作。这似乎是一个非常糟糕的主意。
  • 从字面上看,您的问题由标记的副本回答。也就是说,我同意上面的说法,即你正在以错误的方式处理这一切。您应该提升您的 自己的 进程,或者甚至只是以提升的方式运行程序以开始(然后您不需要以编程方式执行任何操作),然后 System.IO.File 类具有您的所有功能这里需要。

标签: c# child-process elevated-privileges


【解决方案1】:

我正在寻找,你可以试试这个:

string command;
command = "powershell -Command 'Start-Process cmd -Verb RunAs'"
System.Diagnostics.Process.Start("cmd.exe",command);

您只需使用 powershell 即可以管理员身份启动 CMD

使用它,您可以毫无问题地使用命令。

我希望它对你有用:)

【讨论】:

  • 这需要安装 PowerShell。此外,您可以只提供 System.Diagnostics.Process.Start 以及开箱即用的 runas 动词,这也有点过头了,这与 PowerShell 所做的相同。因此,没有必要为了启动另一个进程而运行一个进程。
  • 没关系,你可以在 Linux 或 MacOS 上安装 PowerShell github.com/PowerShell/PowerShell/releases 对于 MacOS 下载 .pkg 文件,对于 Linux,.deb文件并安装它
猜你喜欢
  • 2011-12-29
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多