1

フォルダーのアクセス許可を設定するコードを書きました。私が開発した関数は

public void SetPermission(string user,FileSystemRights rights)
{
    DirectoryInfo dInfo = new DirectoryInfo(folderPath);
    DirectorySecurity oDirectorySecurity = new DirectorySecurity();

    oDirectorySecurity.AddAccessRule(new FileSystemAccessRule(user, rights, AccessControlType.Allow));
    dInfo.SetAccessControl(oDirectorySecurity);
}

この機能は、ユーザーの権限を設定するために正常に機能しています。しかし、フォルダーの Properties -> Security を確認すると、ユーザーが追加されました。ただし、チェックボックス Open Advanced ダイアログボックスで権限がチェックされていません。このボックスには、ユーザーに設定した権限が表示されます。

だから私の質問は、セキュリティタブにチェックボックスが選択されていないのに、詳細タブにあるのはなぜですか?

私を助けてください!!!!!!

4

2 に答える 2

1

私もこれに出くわしました。サービスパッチのようです。

http://jspot.jerryhanel.com/2009/01/08/c-filedirectory-permissions/で私がどのように修正したかを読むことができます

短いバージョン:すべてのユーザーのすべてのACLにフラグを設定する必要があります。はい...それは醜いです。また、Service Pack 3を追加すると、チェックマークが再び消えます。誰かがこれよりもクリーンな解決策を持っているなら、私に知らせてください。

私のサイトにはそのためのコードがあります。

更新:URLが新しいサイトを指すようになりました。

于 2009-01-09T21:34:22.270 に答える
0

dInfo.GetAccessControlを使用してoDirectorySecurityを初期化すると役立つ場合があります。oDirectorySecurity.SetOwnerを呼び出すこともできます。

権限が正しいオブジェクトに適用されていない場合にのみ、権限が詳細に表示されることがあります。FileSystemAccessRuleオブジェクトに継承/伝播フラグを設定してみてください。

于 2008-12-04T07:58:35.750 に答える