【问题标题】:C# - Show "Get file permission" dialog to get accessC# - 显示“获取文件权限”对话框以获取访问权限
【发布时间】:2016-06-21 09:30:22
【问题描述】:

我希望能够让我的用户获得对他们无权访问的文件夹的读/写权限,而无需他们做额外的工作。我想让这个框出现在下面,然后他们可以简单地点击“继续”,然后程序就会继续进行。

我可以通过使用使框出现

Process.Start(filePath);

但这也会打开文件夹,这有点笨重。有没有办法只显示这个对话框,等待用户交互,然后继续执行?

【问题讨论】:

  • 这段代码是作为执行用户执行的吗?你想在后台执行这个吗? - 只是设置权限?
  • @profesor79 - 如果我能在后台做就太好了,但仍在尝试查找如何做。谢谢。

标签: c# .net permissions


【解决方案1】:

在这种情况下我会怎么做:

测试文件的权限,您可以添加任何需要的内容(读取、执行、遍历)

public static bool HasWritePermissionOnDir(string path)
{
    var writeAllow = false;
    var writeDeny = false;
    var accessControlList = Directory.GetAccessControl(path);
    if (accessControlList == null)
        return false;
    var accessRules = accessControlList.GetAccessRules(true, true, 
                                typeof(System.Security.Principal.SecurityIdentifier));
    if (accessRules ==null)
        return false;

    foreach (FileSystemAccessRule rule in accessRules)
    {
        if ((FileSystemRights.Write & rule.FileSystemRights) != FileSystemRights.Write) 
            continue;

        if (rule.AccessControlType == AccessControlType.Allow)
            writeAllow = true;
        else if (rule.AccessControlType == AccessControlType.Deny)
            writeDeny = true;
    }

    return writeAllow && !writeDeny;
}

source

那么如果没有访问权限

// Add the access control entry to the file.
AddFileSecurity(fileName, @"DomainName\AccountName",
                FileSystemRights.ReadData, AccessControlType.Allow);

FileSystemRights - 根据需要设置 source

将所有操作放在 try-catch 块中,因为处理文件总是会出现问题 :-)

确保您的用户有权更改权限(以管理员身份运行)

【讨论】:

  • 嗯,我已经尝试过了,并且我还在以下线程中提供了代码:stackoverflow.com/questions/8944765/… 和那个人一样,我没有任何运气。代码成功完成,但未按预期授予权限。
猜你喜欢
  • 2020-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 2019-12-14
  • 2014-05-04
相关资源
最近更新 更多