Development Tip

Windows 서비스의 전체 경로 가져 오기

yourdevel 2020. 12. 9. 21:52
반응형

Windows 서비스의 전체 경로 가져 오기


Windows 서비스 .exe 파일이 동적으로 설치된 폴더를 어떻게 찾을 수 있습니까?

Path.GetFullPath(relativePath);

C:\WINDOWS\system32디렉토리를 기반으로 경로를 반환합니다 .

그러나이 XmlDocument.Load(string filename)메서드는 서비스 .exe 파일이 설치된 디렉터리 내의 상대 경로에 대해 작동하는 것으로 보입니다.


시험

System.Reflection.Assembly.GetEntryAssembly().Location

이 시도:

AppDomain.CurrentDomain.BaseDirectory

(예 : Windows 서비스 exe 경로를 찾는 방법 )


Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)

이것은 Windows 서비스에서 작동합니다.

//CommandLine without the first and last two characters
//Path.GetDirectory seems to have some difficulties with these (special chars maybe?)
string cmdLine = Environment.CommandLine.Remove(Environment.CommandLine.Length - 2, 2).Remove(0, 1);
string workDir = Path.GetDirectoryName(cmdLine);  

실행 파일의 절대 경로를 제공해야합니다.


위의 다른 버전 :

string path = Assembly.GetExecutingAssembly().Location;
FileInfo fileInfo = new FileInfo(path);
string dir = fileInfo.DirectoryName;

Environment.CurrentDirectory는 프로그램이 실행중인 현재 디렉터리를 반환합니다. Windows 서비스의 경우 실행 파일이 배포 된 위치가 아닌 실행 파일이 실행될 위치 인 % WINDIR % / system32 경로를 반환합니다.


실행 파일이있는 경로를 제공해야합니다.

Environment.CurrentDirectory;

그렇지 않은 경우 다음을 시도 할 수 있습니다.

Directory.GetParent(Assembly.GetEntryAssembly().Location).FullName

좀 더 해롭지 만 기능적인 방법 :

Path.GetFullPath("a").TrimEnd('a')

:)

참고 URL : https://stackoverflow.com/questions/199961/getting-full-path-for-windows-service

반응형