2010-03-30 8 views
4

VB.NET으로 작성된 설치 프로젝트를하고 있는데 특정 폴더에 대한 사용 권한을 NetworkService 계정에 부여해야합니다.NetworkService 사용 권한 (다국어)

다음 코드는 완벽한 (윈도우 7 - EN-US) 작동 : 나는 모든 PT-BR에 내 Windows 7, Vista 또는 XP (에 매우 동일한 코드를하려고 할 때

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) 

이 문제는 시작되었다), "NETWORK SERVICE"가 없으며 올바른 이름은 "Serviço de Rede"입니다.

올바른 사용자에게 권한을 부여하려면이 이름을 알아야합니다.

3 가지 OS 모두에 대해 많은 조사를 한 결과 사용자의 ID는 "S-1-5-20"이며 레지스트리의 경로는 Computer \ HKEY_USERS \ S-1-5입니다. -20 및 기본 폴더 : C : \ Windows \ ServiceProfiles \ NetworkService

그러나 실제 "지역화 가능"이름을 찾지 못했습니다.이 시스템이 설치되기 때문에 동적이어야합니다. 많은 다른 나라 (다른 기계와 문화).

미리 감사드립니다.

답변

1

그래서 점점 더 많은 연구 후에, 나는 구글과 유래를 통해 내 검색을 변경했습니다, 그리고 또 다른 질문에 대한 답을 발견했습니다 :

The best way to resolve display username by SID?

Dim NetworkServiceName as String = new SecurityIdentifier("S-1-5-20").Translate(typeof(NTAccount)).ToString(); 
+0

"NETWORK SERVICE"대신 "NT AUTHORITY \ NetworkService"를 사용하면 궁금합니다. –

+0

"NT AUTHORITY"가 pt-BR –

5

사용 System.Security.Principal.WellKnownSidType 열거 :

SecurityIdentifier networkService = new SecurityIdentifier(
    WellKnownSidType.NetworkServiceSid, null); 

FileSystemAccessRule rule = new FileSystemAccessRule(
    networkService, FileSystemRights.FullControl, AccessControlType.Allow); 
+0

에 "AUTORIDADE NT"이기 때문에 질문을 게시하기 전에 Vista pt-BR을 시도했지만 제대로 작동하지 않았습니다. 더 깨끗하고 나은 솔루션처럼 보이지만 불행히도 작동하지 않습니다. 더 이상 회사에서, 그리고 나는 프로젝트에서 그것을 테스트 할 수 없습니다. –