Das von mir entwickelte Tool muss einer von ihm erstellten Datei Zugriffsrechte "Vollzugriff" gewähren. Es muss von allen Windows-Konten und sogar von möglichen zukünftigen Konten gelesen, geändert und gelöscht werden. Könnte dies erreicht werden?
Ich weiß, dass ich dies für einen SPECIFIC_USER versuchen kann:
FileSystemAccessRule rule = new FileSystemAccessRule(SPECIFIC_USER, FileSystemRights.FullControl, AccessControlType.Allow);
FileSecurity fSecurity = File.GetAccessControl(filePath);
fSecurity.SetAccessRule(rule);
File.SetAccessControl(filePath, fSecurity);
Aber wie kann ich es allen Benutzern gewähren? Und sogar mögliche zukünftige Konten? Wenn der letzte Teil nicht möglich ist, wie geht man dann mit der ersten Anforderung um?
Vielen Dank.
BEARBEITEN:
Dies ist der Code, der für mich funktioniert hat. Entnommen aus dem Link des Antwortenden.
private bool GrantAccess(string fullPath)
{
DirectoryInfo dInfo = new DirectoryInfo(fullPath);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule(
new SecurityIdentifier(WellKnownSidType.WorldSid, null),
FileSystemRights.FullControl,
InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,
PropagationFlags.NoPropagateInherit,
AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
return true;
}
Beachten Sie, PropagationFlags.NoPropagateInherit
was erforderlich ist (gegenüber dem letzten im Link erwähnt). Es gewährt auch zukünftigen Konten Privilegien.
new SecurityIdentifier(WellKnownSidType.WorldSid, null)
ein SecurityIdentifier-Objekt. Jeder arbeitet nur an englischen Windows-Installationen. Mit der anderen Methode wird sichergestellt, dass es mit mehreren Sprachversionen kompatibel ist.