System.Management
およびSystem.Management.Instrumentation
名前空間を使用する場合、Directory.GetAccessControl
メソッドを使用して、フォルダーにアクセスできるユーザーを取得できます。AddAccessRule
その後、 メソッドとメソッドを使用してSetAccessControl
、新しい権限を実際に適用できます。完了したら、新しい権限を削除できます。フォルダーのアクセス許可を変更する方法については、次の記事を参照してください。
http://www.redmondpie.com/applying-permissions-on-any-windows-folder-using-c/
この著者が使用する基本的なコードは次のとおりです。
DirectoryInfo myDirectoryInfo = new DirectoryInfo(yourFolderHere);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();
// Builds a new user string for who we want to give permissions to
string User = System.Environment.UserDomainName + "\\" + yourUserName;
// Creates the permissions to apply
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User,
FileSystemRights.FullControl, AccessControlType.Allow));
// Set the new access settings.
myDirectoryInfo.SetAccessControl(myDirectorySecurity);
// Showing a Success Message
MessageBox.Show("Permissions Altered Successfully");
}
所有者の設定に関しては、その方法に関する優れた SO 記事を次に示します。
C# - DirectorySecurity.SetOwner() の使用方法 困っている
ただし、所有者を他の人に設定したい場合 (ユーザーが所有権を割り当てるアクセス権を既に持っている場合、所有権をユーザーに割り当てる必要はないと想定しているため)、この上記の方法は機能しません。信じない。所有者を自分以外の人に設定する方法に関するドキュメントを見つけました。リンクは次のとおりです。
http://blog.salamandersoft.co.uk/index.php/2009/10/setting-the-owner-of-files-and-directories-in-c/