代码之家  ›  专栏  ›  技术社区  ›  wonea Ilya Smagin

验证用户在c中创建目录#

  •  0
  • wonea Ilya Smagin  · 技术社区  · 14 年前

    我一直试图解决由于试图在位于同一网络上的外部计算机上创建文件夹而导致的unauthorizedaccessexception,我尝试通过添加accessrule来解决此问题,但这无助于我仍然得到相同的错误。

    String thepath = @"\\WONEATEMPMACHINE\C\ExampleData\"
    DirectoryInfo dInfo = new DirectoryInfo(thepath);
    DirectorySecurity dSecurity = dInfo.GetAccessControl();
    
    dSecurity.AddAccessRule(new FileSystemAccessRule("DOMAINEXAMPLE\\wonea",
                            FileSystemRights.Write,
                            InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
                            PropagationFlags.None,
                            AccessControlType.Allow));
    
                            dInfo.SetAccessControl(dSecurity);
    
    Directory.CreateDirectory(thepath + "\\newfolder");
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Chuck    14 年前

    一个简单的猜测是,您的应用程序正在运行的帐户首先需要有写权限才能对目录进行这样的更改。

    可能有几种方法可以解决此问题,但基本目标是应用程序运行时所使用的帐户在创建子目录时需要对父目录具有写权限。

    如果您的应用程序正在模拟用户,一种解决方案是将这些用户放在已具有权限的组中。或者,也可能是更安全的方法,应用程序可以切换到一个已经有权创建目录的应用程序帐户,只向登录用户分配对新目录的访问权,然后切换回登录用户帐户。另一个选择,可能是最安全的,就是提前创建目录,但我猜这些目录不会提前知道。