如何获得删除文件/文件夹的管理员权限?

时间:2015-10-13 11:28:03

标签: c# delete-file user-permissions

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

是否有从文件/文件夹中删除所有权限,以便删除?

我的代码是:

//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;
}

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

2 个答案:

答案 0 :(得分:1)

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

将requestedExcecutionLevel更改为:

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

答案 1 :(得分:1)

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

如果您希望在没有管理员权限的情况下运行您的程序,但只有部分内容需要管理员权限,则可以在两个不同的进程中分离您的软件。 (两个应用程序,或一个主程序应用程序和另一个在后台运行以执行受限任务的服务,每个都有自己的优点和缺点)

关于使您的应用程序UAC知晓的主题的广泛文章可以是found here