2015-10-13 107 views
0

我正在写一个程序从我的电脑中删除一个文件或文件夹,但似乎我无法获得删除它的所有权限。我如何获得管理员权限以删除文件/文件夹?

无论如何删除文件/文件夹的所有权限,使其可能被删除?

我的代码是:

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

我只是想获得用户的权限,并能与权限删除文件。

+1

您是否曾尝试向项目中添加清单并请求像Windows那样的管理员权限? –

+0

如果你可以重写代码的权限,这将会有点愚蠢。 – Jamiec

+0

ohh我没有想到这一点,我会看看我是否可以做到这一点 –

回答

0

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

您requestedExcecutionLevel改成这样:

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

无法从进程中获得的权限。您需要使用管理权限运行您的程序。

如果您想让程序可以在没有管理员权限的情况下运行,但只有一部分需要管理员权限,您可以将软件分为两个不同的进程。 (或者两个应用程序,或一个主要程序应用和其他服务在后台运行,以执行受限任务,每个都有自己的一套利弊&缺点)

让您的应用程序支持UAC可以的话题上的文章found here