我需要以编程方式删除组"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目录内目录的权限?
答案 0 :(得分:4)
假设C:\Windows\System32\Tasks2
确实存在,最可能的解释是你被file system redirector抓住了。您有一个32位进程,文件系统重定向器将system32
转换为SysWOW64
。因此,当您认为自己正在寻找C:\Windows\System32\Tasks2
时,您实际上正在寻找C:\Windows\SysWOW64\Tasks2
。
将程序编译为64位。或者使用C:\WINDOWS\SysNative
。