Also, ich mache ein Setup-Projekt, alles in VB.NET geschrieben, und ich muss dem NetworkService-Konto, Berechtigung auf einen bestimmten Ordner geben.
Der folgende Code funktioniert perfekt (Windows 7 - en-US):
Dim dInfo As New DirectoryInfo("C:\FolderOrFileToGivePermission")
Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()
dSecurity.AddAccessRule(New FileSystemAccessRule("NETWORK SERVICE", FileSystemRights.FullControl, AccessControlType.Allow))
dInfo.SetAccessControl(dSecurity)
Das Problem begann, als ich den gleichen Code auf meinem Windows 7, Vista oder XP ( alle in PT-BR ), habe ich festgestellt, dass es keinen "NETZWERKDIENST" gibt, die richtige Bezeichnung ist "Serviço de Rede".
Ich muss diesen Namen erhalten, um dem richtigen Benutzer die Erlaubnis zu erteilen.
Nach vielen Nachforschungen auf allen 3 Betriebssystemen habe ich herausgefunden, dass die ID des Benutzers "S-1-5-20" ist, sein Pfad in der Registrierung lautet: Computer \HKEY_USERS\S -1-5-20 und den Standardordner dafür: C:\Windows\ServiceProfiles\NetworkService
Aber ich habe immer noch nicht den eigentlichen "lokalisierbaren" Namen gefunden, und er muss dynamisch sein, da dieses System in vielen verschiedenen Ländern installiert werden wird (unterschiedliche Maschinen und Kulturen).
Vielen Dank im Voraus.