2017-07-20 2 views
0

J'écris un programme qui crée des dossiers de partage sur un serveur 2012. J'ai un compte de service:Modifier le propriétaire du partage C#

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

Cette initialisation bien.

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

Lors de l'exécution evrything semble ok, mais quand je regarde sur la sécurité> avancé du dossier le propriétaire est le localadmin ...

Quelle façon de changer definetly le propriétaire de ce dossier? Edit: J'utilisais "File" au lieu de "Directory" c'est pourquoi cela ne fonctionne pas.

+0

Créer une nouvelle connexion réseau avec les informations d'identification du compte de service. Voici un exemple https://gist.github.com/AlanBarber/92db36339a129b94b7dd – Ben

+0

Pourquoi ai-je dû faire cela? le serveur ne reconnaît pas le compte de service avant? –

+0

Votre programme s'exécute-t-il sous le compte de service? – Ben

Répondre

0

Veuillez essayer le code suivant. J'ai utilisé ce lien C# - How to use DirectorySecurity.SetOwner() ? I'm having troubles pour le créer

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

Et vous répondez à ma question non-posée sur la permission . merci pour tout –

+0

De rien. Serait gentil, si vous pourriez donner la réponse du lien un vote :) – Ben

+0

Je suis seulement 13 réputations de vote est permis sur 15 au moins –