如何为c#中的文件夹授予权限?
我需要使用c#为文件夹“临时ASP.NET文件”授予写入权限。。。我用这个密码给它访问权限如何为c#中的文件夹授予权限?,c#,.net,security,permissions,file-permissions,C#,.net,Security,Permissions,File Permissions,我需要使用c#为文件夹“临时ASP.NET文件”授予写入权限。。。我用这个密码给它访问权限 DirectoryInfo d1 = new DirectoryInfo(Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), "Temporary ASP.NET Files")); DirectorySecurity md1 = d1.GetAccessControl(); string use
DirectoryInfo d1 = new DirectoryInfo(Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), "Temporary ASP.NET Files"));
DirectorySecurity md1 = d1.GetAccessControl();
string user_1 = fa.TextGuestDomain + "\\" + fa.TextGuestUser;
md1.AddAccessRule(new FileSystemAccessRule(user_1, FileSystemRights.FullControl,InheritanceFlags.ObjectInherit,PropagationFlags.InheritOnly, AccessControlType.Allow));
d1.SetAccessControl(md1);
实现代码后,当我检查文件夹“临时ASP.NET文件”的安全属性时,它没有选中“写入”权限复选框,而是选中了“特殊权限”复选框。。。我注意到,即使我将访问权限从写更改为完全控制或读,它也会检查“特殊权限”一项
这不是问题:),问题是我没有给它提供正确的访问权限。。。当我给它写的时候,它不像我给它写的权限。我不知道为什么!!我做错了吗
注:
当我以手动方式进行操作时,它会工作,而使用编码方式时。它不起作用了
我希望你能帮我
非常感谢我知道您的痛苦-文件系统ACL很难修改,即使它看起来有效,在某些情况下也可能会损坏。幸运的是,在您的情况下,有一个简单的解决方案 问题在于
传播标志.InheritOnly
。这意味着此权限仅应用于继承权限的项目-例如,您仅授予此目录中文件的权限,而不授予任何子目录中的文件的权限
要授予“正常”继承的目录权限(即传播到子目录和所有文件),请对InheritanceFlags和PropagationFlags使用以下值:
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit
和PropagationFlags.None
private static void GrantAccess(string file)
{
bool exists = System.IO.Directory.Exists(file);
if (!exists)
{
DirectoryInfo di = System.IO.Directory.CreateDirectory(file);
Console.WriteLine("The Folder is created Sucessfully");
}
else
{
Console.WriteLine("The Folder already exists");
}
DirectoryInfo dInfo = new DirectoryInfo(file);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
}
上面的代码将文件夹的访问权限设置为对每个用户(每个人)的完全控制/读写。的工作原理与上面所说的完全相同。每个人都得到了完全的控制,但这对我不起作用。我想在
C:\Program Files\Unity\Hub\Editor\2019.4.20f1\Editor
中添加一些lib,并使用了相同的脚本,修改为不创建目录。我得到错误:System.UnauthorizedAccessException:试图执行未经授权的操作。位于System.Security.AccessControl.NativeObjectSecurity.RaiseExceptionOnFailure(System.Int32错误代码、System.String名称、System.Runtime.InteropServices.SafeHandle句柄、System.Object上下文)[0x00024]