Lo strumento che sviluppo deve concedere i diritti di accesso "Controllo completo" a un file creato da esso. Deve essere letto, modificato e cancellato da tutti gli account di Windows e anche da possibili account futuri. Questo potrebbe essere raggiunto?Come concedere l'autorizzazione completa a un file creato dalla mia applicazione per TUTTI gli utenti?
So che posso provare questo per uno SPECIFIC_USER:
FileSystemAccessRule rule = new FileSystemAccessRule(SPECIFIC_USER, FileSystemRights.FullControl, AccessControlType.Allow);
FileSecurity fSecurity = File.GetAccessControl(filePath);
fSecurity.SetAccessRule(rule);
File.SetAccessControl(filePath, fSecurity);
Ma come faccio a permettere a tutti gli utenti? E anche possibili account futuri? Se l'ultima parte non è possibile, come fare per il primo requisito?
Grazie.
EDIT:
Questo è il codice che ha lavorato per me. Tratto dal link del rispondente.
private bool GrantAccess(string fullPath)
{
DirectoryInfo dInfo = new DirectoryInfo(fullPath);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule("everyone", FileSystemRights.FullControl,
InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,
PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
return true;
}
Annotare la PropagationFlags.NoPropagateInherit
che è richiesto (citato verso l'ultima nel link). Assicura il privilegio anche agli account futuri.
Nota per le persone, non usare "tutti", invece usare 'nuova SecurityIdentifier (WellKnownSidType.WorldSid, null)', che restituisce un oggetto SecurityIdentifier. Tutti funzionano solo su installazioni di windows in inglese, l'altro metodo garantisce che sia compatibile con versioni in più lingue. –
@trukin puoi renderlo una risposta? grazie – nawfal
@nawfal: Sto avendo lo stesso problema, e ho bisogno di dare accesso alla mia cartella di installazione una volta installata l'applicazione, ma dove posso scrivere questo codice? –