Problema di autorizzazione directory / file
-
11-07-2019 - |
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 !!!!!!
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.