2016-08-03 8 views
0

リモートサーバーで定義されたユーザーアカウントグループをリモートサーバーのフォルダに追加しようとしています。リモートサーバーで定義されたセキュリティグループを同じサーバーのフォルダアクセス許可に追加できません。 「一部またはすべてのID参照を変換できませんでした」

public static void SetFolderPermission(string folderPath,string account) 
{ 
    var directoryInfo = new DirectoryInfo(folderPath); 
    var directorySecurity = directoryInfo.GetAccessControl(); 

    var fileSystemRule = new FileSystemAccessRule(account, 
          FileSystemRights.Read, 
          InheritanceFlags.ObjectInherit | 
          InheritanceFlags.ContainerInherit, 
          PropagationFlags.None, 
          AccessControlType.Allow); 

    directorySecurity.AddAccessRule(fileSystemRule); 
    directoryInfo.SetAccessControl(directorySecurity); 
} 

私はdomainname\accountnameでアカウントを追加することができていますが、私は、リモート・サーバーで定義されたローカルアカウントグループを追加することができません。

+0

この関数に送信する実際の(リテラル)パラメータも含めることができますか? ( 'C:\'と 'MyMachine \ Sandeep'のような) –

+0

はい、それは事実です - **マシンローカル**ユーザーとグループ**はサーバーベースのグループに追加できません**。 –

+0

"domainname \ accountname"のようなuseraccountを\\ server1 \ D $ \ folder1に追加することはできますが、group1がローカルのserver1 \ group1のようなグループは追加できません。 –

答えて

0

プリンシパルコンテキストをサーバーに変更することで解決できます。

public void SetFolderPermission(string folderPath,string account,string server) 
{ 
    var directoryInfo = new DirectoryInfo(folderPath); 
    var directorySecurity = directoryInfo.GetAccessControl(); 
    PrincipalContext pt = new PrincipalContext(ContextType.Machine, server); 

    using (GroupPrincipal val = GroupPrincipal.FindByIdentity(pt, account)) 
{ 

    FileSystemAccessRule fileSystemRule = new FileSystemAccessRule(val.Sid, 
                FileSystemRights.Read, 
                InheritanceFlags.ObjectInherit | 
                InheritanceFlags.ContainerInherit, 
                PropagationFlags.None, 
                AccessControlType.Allow);//var 

    directorySecurity.AddAccessRule(fileSystemRule); 
    directoryInfo.SetAccessControl(directorySecurity); 

    MessageBox.Show("done"); 
} 
} 
関連する問題