System.IO.Directory.CreateDirectory只具有当前用户的权限?

Shi*_*mmy 2 .net c# vb.net filesystems system.io.directory

我希望asp应用程序创建一个只能访问应用程序运行的帐户的文件夹(即asp帐号?)

我实际上想要使用这个,但我不知道如何动态使用"Computer\CurrentAccount".

我想获得当前的工作帐户.

谢谢.

Ric*_*ard 5

有创造的一个例子DirectorySecurity实例,并添加一个名为用户的ACE 这里(但使用默认构造函数来启动一个空的ACL).

要获得帐户的SID,有两种可能性(这些需要测试):

第一种方法是依赖进程的所有者作为目录的所有者.如果进行模拟,这可能会中断(例如,在Windows身份验证下,将客户端的标识用于对文件系统内容的访问控制):

var ds = new DirectorySecurity();
var sid = new SecurityIdentifier(WellKnownSidType.CreatorOwnerSid, null)
var ace = new FileSystemAccessRule(sid,
                                   FileSystemRights.FullControl,
                                   AccessControlType.Allow);
ds.AddAccessRule(ace);
Run Code Online (Sandbox Code Playgroud)

第二种方法是从进程令牌中获取进程所有者,这将需要P/Invoke.这包括一个例子:http://www.codeproject.com/KB/cs/processownersid.aspx,一旦你有SID为它创建一个SecurityIdentifier实例,并按照上面的步骤创建ACL.