【发布时间】:2010-03-30 13:35:16
【问题描述】:
所以,我正在做一个安装项目,全部用 VB.NET 编写,我需要授予 NetworkService 帐户,对某个文件夹的权限。
以下代码完美运行(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)
当我在我的 Windows 7、Vista 或 XP(all in PT-BR)上尝试这个非常相同的代码时,问题开始了,我发现没有“NETWORK SERVICE”,正确的名称是“Serviço de Rede”。
我需要获取此名称才能将权限授予正确的用户。
经过对所有3个操作系统的大量调查,我发现用户的ID是:“S-1-5-20”,他在注册表上的路径是:Computer\HKEY_USERS\S-1-5- 20 及其默认文件夹:C:\Windows\ServiceProfiles\NetworkService
但我仍然没有找到实际的“可本地化”名称,我需要它是动态的,因为这个系统将安装在许多不同的国家(不同的机器和文化)。
提前致谢。
【问题讨论】:
标签: vb.net permissions globalization