更改分享所有者C#

时间:2017-07-20 13:19:21

标签: c# windows security acl owner

我正在编写一个在2012服务器上创建一些共享文件夹的程序。 我有一个服务帐户:

NTAccount serviceAccount = new NTAccount("myDomain", "SA_LiPAM");

此初始化工作正常。

if (folder.IndexOf('\\') == 0)
{
    Directory.CreateDirectory("\\\\" + serveurName + "\\Test-Projects\\" + pPrjName.Text + folder);// Creation
    fs = Directory.GetAccessControl("\\\\" + serveurName + "\\Test-Projects\\" + pPrjName.Text + folder);
    fs.SetOwner(serviceAccount);// Set owner
    Directory.SetAccessControl("\\\\" + serveurName + "\\Test-Projects\\" + pPrjName.Text + folde, fs);
}

执行时,evrything似乎没问题,但是,当我查看安全性>文件夹的高级版本时,所有者就是localadmin ...

哪种方式可以直接更改此文件夹的所有者?

编辑:我正在使用"文件"而不是"目录"这就是为什么它不起作用。

1 个答案:

答案 0 :(得分:0)

请尝试以下代码。我已使用此链接C# - How to use DirectorySecurity.SetOwner() ? I'm having troubles创建

if (folder.IndexOf('\\') == 0)
{
    string dir = "\\\\" + serveurName + "\\Test-Projects\\" + pPrjName.Text + folder;
    Directory.CreateDirectory(dir);                    
    DirectoryInfo di = new DirectoryInfo(dir);
    DirectorySecurity ds = di.GetAccessControl();                    
    ds.SetOwner(serviceAccount);
    FileSystemAccessRule permissions = new FileSystemAccessRule(serviceAccount, FileSystemRights.FullControl, AccessControlType.Allow);
    ds.AddAccessRule(permissions);
    di.SetAccessControl(ds);
}