2016-07-07 6 views
1

을 얻는 방법 나는 C처럼 ... C#을 Windows 서비스 내에서
를 사용자 디렉토리를 얻을 필요가 : \ 사용자 \ 이상적으로
\, 내가 좋아하는 것 MyUserName 에다 C처럼 ... 로밍 경로 ...
을 가지고 : 나는 내가 올바른 사용자 디렉토리를 가지고 콘솔 프로그램에서 다음을 사용하는 경우 ... \ 사용자 \ MyUserName 에다 \의 AppData \ 로밍
\C#을 서비스 : 사용자 프로필 폴더 경로

System.Environment.GetEnvironmentVariable("USERPROFILE"); 

...하지만 서비스에서 같은 변수를 사용하면 ...
C : \ WINDOWS \ system32 \ config \ sys temprofile
서비스에서 사용자 폴더와 어쩌면 로밍 폴더 위치를 얻으려면 어떻게해야합니까?
미리 감사드립니다.

+0

Windows 서비스가로 실행되지 않습니다 로그인 한 사용자. 자신이하려는 일에 대해 조금 더 설명하면 대답에 도움이 될 수 있습니다. – Chamindu

답변

0

서비스가 특정 사용자의 프로필을 사용하도록 구성되어 있지 않으면 사용자가 로그온하지 않습니다. 따라서 "사용자"폴더를 가리 키지 않습니다. 먼저

+0

그건 의미가 있습니다. 사용자 프로필 폴더의 위치를 ​​포함하는 변수가 있습니까? 그러면 나는 그들을 통해 열거 할 것이다. –

+0

이 노드 아래의 레지스트리 키. HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList. "ProfilesDirectory"항목을 찾으십시오. –

+0

현재 로그인 한 사용자를 알 수있는 방법이 있습니까? –

0

, 당신은

Environment.SpecialFolder.ApplicationDataEnvironment.GetFolderPath(Environment.SpecialFolder.UserProfile) 로밍 프로필을위한 사용할 수 있습니다.

여기에 모든 SpecialFolder 열거 형 값을 찾기 : https://msdn.microsoft.com/en-us/library/system.environment.specialfolder(v=vs.110).aspx

다른 사람이 언급 한 것처럼, 서비스는 구성에 따라 계정 로컬 시스템/LocalService를 /가 NetworkService으로 실행됩니다 : https://msdn.microsoft.com/en-us/library/windows/desktop/ms686005(v=vs.85).aspx

+0

Environment.SpecialFolder.ApplicationData에서 C : \ WINDOWS \ system32 \ config \ systemprofile \ AppData \ Roaming을 얻습니다. 내가 찾고 있어요. 나는 codenoir가 subbested하는 것에 따라 내가 레지스트리를 볼 것임에 틀림 없다. –