2017-07-20 55 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 –