削除の取り消しポスト:私はこのコードのビット以前まで書かれていた
は、残念ながらそれは、CLR/.NET固有のものです。しかし、あなたは 'the API'を使用することは難しいと主張しているので(10年前に行ったことですが、NTFS ACLSはpicknickではありません)、下記のサンプルで動機づけられて、.NETコード(C++/CLIまたはInteropベース?)
C#コードを使用しない特定の理由はありますか? MSDN: How to: Add or Remove Access Control List Entriesから次のヘルパーで
AddFileSecurity(fileName, @"DomainName\AccountName",
FileSystemRights.ReadData, AccessControlType.Allow);
RemoveFileSecurity(fileName, @"DomainName\AccountName",
FileSystemRights.ReadData, AccessControlType.Allow);
:
public static void AddFileSecurity(string fileName, string account,
FileSystemRights rights, AccessControlType controlType)
{
FileSecurity fSecurity = File.GetAccessControl(fileName);
fSecurity.AddAccessRule(new FileSystemAccessRule(account,
rights, controlType));
File.SetAccessControl(fileName, fSecurity);
}
public static void RemoveFileSecurity(string fileName, string account,
FileSystemRights rights, AccessControlType controlType)
{
FileSecurity fSecurity = File.GetAccessControl(fileName);
fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
rights, controlType));
File.SetAccessControl(fileName, fSecurity);
}
完全な詳細についての記事を参照してください
。おそらく、適切なWin32 APIを呼び出すほうがよいでしょうか? – Neil
win32 Apisを使用するのはあなたの考えるよりも難しいです。それも試してみましたが、そこにも多くはできませんでした。 – user1042321
'hInst'をチェックしてエラーが発生していないかどうか確認しましたか?関数が成功すると、32より大きい値が返されます。 – philipvr