Domanda

Ho scritto il codice per impostare l'autorizzazione della cartella. La funzione che ho sviluppato era

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

Questa funzione funziona correttamente per impostare l'autorizzazione per l'utente. Ma quando controllo la cartella Proprietà - > Sicurezza, aggiunta utente. Ma nessuna autorizzazione è selezionata nella casella di controllo Apri la finestra di dialogo Avanzate. In questa casella posso vedere l'autorizzazione, che ho impostato per l'utente.

Quindi la mia domanda è: Perché non c'è alcuna casella di controllo selezionata nella scheda Sicurezza, ma è presente nella scheda Avanzate?

Aiutami, per favore !!!!!!

È stato utile?

Soluzione

Mi sono imbattuto anche in questo. Sembra essere una cosa di Service Patch.

Puoi leggere come l'ho corretto su http: // jspot.jerryhanel.com/2009/01/08/c-filedirectory-permissions/

La versione breve: devi impostare un flag per tutti gli ACL per tutti gli utenti. Sì ... è brutto. E quando aggiungi il Service Pack 3, i segni di spunta scompaiono di nuovo. Se qualcuno ha una soluzione più pulita di questa, per favore fatemelo sapere.

Ho un codice per questo sul mio sito.

AGGIORNAMENTO : l'URL ora punta al nuovo sito.

Altri suggerimenti

Potrebbe essere utile utilizzare dInfo.GetAccessControl per inizializzare oDirectorySecurity. Puoi anche provare a chiamare oDirectorySecurity.SetOwner.

A volte le autorizzazioni vengono visualizzate in avanzato solo se non vengono applicate agli oggetti corretti. Prova a impostare i flag Inheritance / Propigation sull'oggetto FileSystemAccessRule.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top