如何在C#中更改System32内文件夹的权限?

时间:2014-01-15 15:38:58

标签: c# .net security ntfs

我需要以编程方式删除组"NT AUTHORITY\\INTERACTIVE"的System32目录内的目录上的“创建文件”和“创建目录”权限。

为此,我写了以下代码:

        string windir = Environment.GetEnvironmentVariable("systemroot");
        string redirectionFolder = (windir + "\\System32\\Tasks2");
        MessageBox.Show(redirectionFolder);
        FileSystemAccessRule Tasks = new FileSystemAccessRule("NT AUTHORITY\\INTERACTIVE", FileSystemRights.CreateDirectories | FileSystemRights.CreateFiles, AccessControlType.Deny );
        DirectorySecurity dirSecurity = new DirectorySecurity(redirectionFolder, AccessControlSections.Group);
        dirSecurity.AddAccessRule(Tasks);
        Directory.SetAccessControl(redirectionFolder, dirSecurity);

当我在文件夹C:\Tasks2上运行此代码时,它可以正常工作。

但是当我在C:\Windows\System32\Tasks2上运行时,我得到System.IO.DirectoryNotFoundException例外。以管理员身份运行应用程序无济于事。

如何在C#中更改System32目录内目录的权限?

1 个答案:

答案 0 :(得分:4)

假设C:\Windows\System32\Tasks2确实存在,最可能的解释是你被file system redirector抓住了。您有一个32位进程,文件系统重定向器将system32转换为SysWOW64。因此,当您认为自己正在寻找C:\Windows\System32\Tasks2时,您实际上正在寻找C:\Windows\SysWOW64\Tasks2

将程序编译为64位。或者使用C:\WINDOWS\SysNative

相关问题