Nabend liebe Community,
zur Lösung
mein Vorhaben liegt darin, den Eigentümer von einer Datei zu ändern.
Es handelt sich um eine Systemdatei, weshalb ich das Programm bereits mit
Ursprünglicher Eigentümer ist
Anschließend möchte ich diesem neuen Gruppenkonto einen Vollzugriff für diese Datei erteilen.
Ich habe folgenden Code:
Ich bekomme jedoch folgende Fehlermeldung:
Ich kann das manuell ohne Probleme durchführen, jedoch habe ich einige PCs damit auszustatten, und das ist ne blöde und aufwändige Arbeit.
Darum mein Vorhaben, es mit einem Programm zu automatisieren.
Was mache ich da falsch?
Danke für Eure Hilfe
zur Lösung
mein Vorhaben liegt darin, den Eigentümer von einer Datei zu ändern.
Es handelt sich um eine Systemdatei, weshalb ich das Programm bereits mit
level="highestAvailable"
ausführe.Ursprünglicher Eigentümer ist
TrustedInstaller
, ich möchte den Eigentümer aber auf das Gruppenkonto Administratoren
ändern.Anschließend möchte ich diesem neuen Gruppenkonto einen Vollzugriff für diese Datei erteilen.
Ich habe folgenden Code:
VB.NET-Quellcode
- Option Strict On
- Option Explicit On
- Try
- Dim Datei As String = System.Environment.SystemDirectory & "\drivers\battc.sys" 'C:\Windows\System32\drivers\battc.sys
- ' Benutzer festlegen
- Dim benutzer As Security.Principal.IdentityReference = New Security.Principal.NTAccount("Administratoren")
- ' Instanziierung der FileSecurity ohne Parameter
- Dim berechtigung As New AccessControl.FileSecurity()
- ' ...und auf die Datei anwenden.
- Dim file As New IO.FileInfo(Datei)
- file.SetAccessControl(berechtigung)
- ' Erst danach Zugriffsrechte setzen
- Dim regel As New AccessControl.FileSystemAccessRule(benutzer, AccessControl.FileSystemRights.FullControl, AccessControl.AccessControlType.Allow)
- berechtigung.SetAccessRule(regel)
- file.SetAccessControl(berechtigung)
- Catch ex As Exception
- MessageBox.Show(ex.Message & Environment.NewLine & Environment.NewLine & ex.StackTrace, "Errorcode " & Err.Number, MessageBoxButtons.OK, MessageBoxIcon.Error)
- End Try
Ich bekomme jedoch folgende Fehlermeldung:
Quellcode
- Es wurde versucht, einen nicht autorisierten Vorgang auszuführen.
- bei System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)
- bei System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
- bei System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext)
- bei System.Security.AccessControl.FileSystemSecurity.Persist(String fullPath)
- bei System.IO.FileInfo.SetAccessControl(FileSecurity fileSecurity)
- bei GroupChange.Form1.ChOwn()
Ich kann das manuell ohne Probleme durchführen, jedoch habe ich einige PCs damit auszustatten, und das ist ne blöde und aufwändige Arbeit.
Darum mein Vorhaben, es mit einem Programm zu automatisieren.
Was mache ich da falsch?
Danke für Eure Hilfe
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „TRiViUM“ ()