如何使用c#获取文件或文件夹的完全访问控制

时间:2013-08-21 13:20:53

标签: permissions

我要使用C#编程(我创建的“Win32”文件夹)将文件复制到Windows 7中的这个路径(C:\ Windows \ Win32)但是我不能。因为操作系统不是'允许我。所以我需要完全访问权限。我编写此代码来解决问题,但我在程序运行中看到此错误:“尝试执行未经授权的操作。”  。请帮我 !!! .thanks

using System.IO;
using System.Security.AccessControl;
using System.Management;
using System.Management.Instrumentation;

 1. private void Sample2_Click(object sender, EventArgs e)
 2. {
 3.    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\Windows\Win32");
 4.    FileSystemAccessRule fsar = new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow);
 5.    DirectorySecurity ds = null;
 6.    if (!di.Exists)
 7.    {
 8.       System.IO.Directory.CreateDirectory(@"C:\Windows\Win32");
 9.    }
 10.    ds = di.GetAccessControl();
 11.    ds.AddAccessRule(fsar);
 12.    di.SetAccessControl(ds);
 13.    File.Copy(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg", @"C:\Windows\Win32\Desert.jpg");
 14.    MessageBox.Show("successfully copy!!!!");
 15. }

1 个答案:

答案 0 :(得分:0)

启动应用程序时需要触发UAC。

将此XML嵌入manifest - 文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
     <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
       <security>
         <requestedPrivileges>
           <requestedExecutionLevel
             level="asInvoker"
             uiAccess="false"/>
           </requestedPrivileges>
          </security>
     </trustInfo>
   </assembly>

或者您可以使用MSDN中的this示例代码或查看here甚至SO。有很多东西。