psexec 실행 오류 - The system cannot find the file specified.
psexec.exe를 이용해 "Local SYSTEM" 권한으로 응용 프로그램을 실행하려고 했는데,
SYSTEM 권한으로 UI 프로그램 실행하는 방법
; https://www.sysnet.pe.kr/2/1/1153
다음과 같이 오류가 발생합니다.
C:\Users\SeongTae\Downloads>psexec -s -i ConsoleApplication1.exe
PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
PsExec could not start ConsoleApplication1.exe on THEPC2:
The system cannot find the file specified.
원인은 간단합니다. C:\Users\SeongTae 폴더는 사용자 프로파일 폴더인데, "-s" 옵션으로 실행되는 "Local SYSTEM" 계정은 해당 폴더를 볼 수가 없습니다.
따라서, ConsoleApplication1.exe를 "C:\temp"와 같은 폴더에 복사해서 실행해야 합니다. 그런데, 여전히 오류가 발생하는 군요. ^^
c:\temp>psexec -s -i ConsoleApplication1.exe
PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
PsExec could not start ConsoleApplication1.exe on THEPC2:
The system cannot find the file specified.
왜냐하면 Local SYSTEM 계정에서 "ConsoleApplication1.exe"의 위치를 찾을 수 없기 때문입니다. 아니... 그렇다면 "
SYSTEM 권한으로 UI 프로그램 실행하는 방법" 글에서 예를 든 regedit.exe는 왜 잘 실행이 된 걸까요?
그 이유는, psexec.exe에 의해 실행되는 프로그램은 윈도우 운영체제의 모듈 찾기 규칙에 마찬가지로 영향을 받기 때문입니다. 따라서 PATH 환경 변수에 등록된 경로에 있는 프로그램은 정상적으로 잘 실행이 되지만, c:\temp가 %PATH%에 등록되어 있지 않다면 오류가 발생합니다.
이런 경우, 다음과 같이 전체 경로를 주면 안전하게 실행할 수 있습니다. ^^
c:\temp>psexec -s -i c:\temp\ConsoleApplication1.exe
PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
c:\temp\ConsoleApplication1.exe exited on THEPC2 with error code 0.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]