【问题标题】:How can I get admin permissions to delete a file/folder?如何获得管理员权限以删除文件/文件夹?
【发布时间】:2016-01-11 03:13:27
【问题描述】:

我正在编写一个程序来从我的电脑中删除一个文件或文件夹,但我似乎无法获得删除它的所有权限。

是否有办法从文件/文件夹中删除所有权限,以使其可以被删除?

我的代码是:

//for each file in my filepath
foreach (string ficheiro in caminhoFicheiros)
{
    string deletar = "Deleting: ";
    meuProgresso.Visible = true;
    meuProgresso.Increment(1);
    listBox.Items.Add(deletar + ficheiro.Substring(tamanho, ficheiro.Length - tamanho));
    //tamanho do ficheiro

    long length = new System.IO.FileInfo(ficheiro).Length;
    //lbMostrarItems.SelectedIndex = lbMostrarItems.Items.Count - 1;

    // instead of doing a try catch, i want to be able to delete the file 
    // just by getting users permission.
    try
    {
        File.Delete(ficheiro);
        listBox.Items.Add("Deleted with sucess!");
    }
    catch (IOException)
    {
        Thread.Sleep(0);
    }
    // i can´t delete the folder because i don´t have permissions.
    catch (UnauthorizedAccessException)
    {
        File.Delete(ficheiro);
    }

    somarTamanho += length;
}

我只想获得用户权限并能够删除具有该权限的文件。

【问题讨论】:

  • 您是否尝试过向项目添加清单并像 Windows 一样请求管理员权限?
  • 如果你可以从代码中覆盖权限,那就有点傻了。
  • 哦,我没想到,我会看看我能不能做到

标签: c# delete-file user-permissions


【解决方案1】:

在您的 app.manifest 中,您需要设置您的应用需要管理员权限。

将您的请求执行级别更改为:

 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

【讨论】:

    【解决方案2】:

    您无法从进程中获取权限。您需要以管理权限运行您的程序。

    如果您想让您的程序无需管理员权限即可运行,但只有部分程序需要管理员权限,您可以将您的软件分成两个不同的进程。 (两个应用程序,或者一个主程序应用程序和另一个在后台运行以执行受限任务的服务,每个都有自己的优缺点)

    有关使您的应用程序具有 UAC 意识的主题的广泛文章可以是found here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 2021-06-27
      • 2011-08-31
      相关资源
      最近更新 更多