Итак, я делаю проект установки, все написано в VB.NET, и мне нужно дать учетной записи NetworkService разрешение на определенную папку.
Следующий код отлично работает (Windows 7 - ru-ru):
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)
Проблема началась, когда я попробовал этот самый код на моей Windows 7, Vista или XP ( все в PT-BR ), я обнаружил, что нет "NETWORK SERVICE", правильное имя "Сервико де Реде".
Мне нужно получить это имя, чтобы дать разрешение нужному пользователю.
После большого количества исследований на всех 3 ОС я обнаружил, что идентификатор пользователя: «S-1-5-20», его путь в реестре: Computer \ HKEY_USERS \ S-1-5- 20
и папка по умолчанию для него: C: \ Windows \ ServiceProfiles \ NetworkService
Но я все еще не нашел фактическое «локализуемое» имя, и мне нужно, чтобы оно было динамичным, потому что эта система будет установлена во многих разных странах (разных машинах и культурах).
Заранее спасибо.