C#如何获取另一个用户的Read/Write权限?
C# How to get Read/Write permissions of another user?
我需要检查某个路径的 Read/Write 权限。但最大的问题是,我不想检查自己的 我想检查另一个用户。
这会检查运行该程序的用户。
System.Security.Principal.NTAccount
我如何检查,例如用户"OTHERUSER"?
到目前为止,这是我的代码。
private Boolean CheckZugriff(string str_projektpfad)
{
str_projektpfad = Path.GetDirectoryName(str_projektpfad);
bool isWriteAccess = false;
try
{
AuthorizationRuleCollection collection = Directory.GetAccessControl(str_projektpfad).GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule rule in collection)
{
if (rule.AccessControlType == AccessControlType.Allow)
{
isWriteAccess = true;
break;
}
}
}
catch (UnauthorizedAccessException ex)
{
isWriteAccess = false;
}
catch (Exception ex)
{
isWriteAccess = false;
}
if (!isWriteAccess)
{
//handle notifications
}
return isWriteAccess;
}
发现两件事可能对您有帮助...
1) 此代码检查为所有用户设置的文件夹权限:
string directory = "your path";
DirectoryInfo di = new DirectoryInfo(directory);
DirectorySecurity ds = di.GetAccessControl();
2) 此代码检查您的用户是否具有管理员权限:
bool isElevated;
WindowsIdentity identity = new WindowsIdentity("user principal name goes here");
WindowsPrincipal principal = new WindowsPrincipal(identity);
isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
如果用户不是管理员并且没有为他设置规则,这是合乎逻辑的 - 他无法访问该文件夹。不确定它是否能解决您的问题,但希望对您有所帮助。
我需要检查某个路径的 Read/Write 权限。但最大的问题是,我不想检查自己的 我想检查另一个用户。
这会检查运行该程序的用户。
System.Security.Principal.NTAccount
我如何检查,例如用户"OTHERUSER"?
到目前为止,这是我的代码。
private Boolean CheckZugriff(string str_projektpfad)
{
str_projektpfad = Path.GetDirectoryName(str_projektpfad);
bool isWriteAccess = false;
try
{
AuthorizationRuleCollection collection = Directory.GetAccessControl(str_projektpfad).GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule rule in collection)
{
if (rule.AccessControlType == AccessControlType.Allow)
{
isWriteAccess = true;
break;
}
}
}
catch (UnauthorizedAccessException ex)
{
isWriteAccess = false;
}
catch (Exception ex)
{
isWriteAccess = false;
}
if (!isWriteAccess)
{
//handle notifications
}
return isWriteAccess;
}
发现两件事可能对您有帮助...
1) 此代码检查为所有用户设置的文件夹权限:
string directory = "your path";
DirectoryInfo di = new DirectoryInfo(directory);
DirectorySecurity ds = di.GetAccessControl();
2) 此代码检查您的用户是否具有管理员权限:
bool isElevated;
WindowsIdentity identity = new WindowsIdentity("user principal name goes here");
WindowsPrincipal principal = new WindowsPrincipal(identity);
isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
如果用户不是管理员并且没有为他设置规则,这是合乎逻辑的 - 他无法访问该文件夹。不确定它是否能解决您的问题,但希望对您有所帮助。