2017-07-20 58 views
0

我正在编写一个程序,它在2012服务器上创建一些共享文件夹。 我有一个服务帐户:更改共享所有者C#

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的文件夹...

哪种方式来definetly更改该文件夹的所有者?

编辑:我使用“文件”而不是“目录”,这就是为什么它不起作用。

+0

使用服务帐户的凭据创建新的网络连接。这里是一个例子https://gist.github.com/AlanBarber/92db36339a129b94b7dd – Ben

+0

为什么我必须这样做?服务器之前不识别服务帐户? –

+0

您的程序是否在服务帐户下运行? – Ben

回答

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); 
} 
+0

而你回答我关于权限的未询问的问题。谢谢你的所有 –

+0

不客气。会很好,如果你可以给出答案从链接投票:) – Ben

+0

我只有13名声望投票是允许15 –