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

时间:2010-11-11 12:35:18

标签: c# visual-studio-2010

我一直试图解决因尝试在外部机器上创建文件夹而导致的未经授权的访问,该机器驻留在同一网络上,我尝试通过添加一个访问规则来解决这个问题,这对我没有帮助仍然会得到同样的错误。

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 个答案:

答案 0 :(得分:0)

快速猜测的是,运行应用程序的帐户需要具有写入权限才能对目录进行此类更改。

如果帐户(模拟或专用应用程序帐户)无权在指定的路径中创建,则它可能无权更改该路径上的访问规则。

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

如果您的应用程序冒充用户,则一种解决方案是将这些用户置于已拥有权限的组中。或者,也许更安全的方法是,应用程序可以切换到已经具有创建目录权限的单个应用程序帐户,仅将新目录的访问权限分配给登录用户,然后切换回登录用户帐户。另一个可能最安全的选择是提前创建目录,但我猜这些都不会提前知道。

如果应用程序未模拟用户,请在应用程序运行之前授予应用程序帐户访问权限。