Windows 7의 대화식 세션 0


14

세션 0에서 cmd.exe를 시작하려고합니다. 지금까지 관리자 권한 명령 프롬프트에서 다음을 수행했습니다.

sc config UI0Detect start= auto
net start UI0Detect

응답은 서비스가 올바르게 시작되었음을 나타냅니다. 이 시점에서 세션 0으로 전환하면 cmd.exe가 실행되고 있다고 가정합니다.

다음 명령을 사용하여 세션 0으로 전환합니다.

rundll32 winsta.dll,WinStationSwitchToServicesSession

성공적으로 세션 0으로 전환되지만 사용 가능한 유일한 창은 세션 1로 돌아가는 옵션이있는 창뿐입니다.

세션 0에서 cmd.exe를 시작하려면 어떻게해야합니까?


왜 이렇게 하시겠습니까? UI0Detect를 사용하면 기존 서비스가 새 GUI 앱을 시작하지 않고 메시지 상자를 표시 할 수 있습니다. cmd.exe에는 GUI가 있습니다
Peter Hahndorf

6
@PeterHahndorf 저는 "한 단계 뒤로 물러서서 이것이 나쁜 생각처럼 들리기 때문에 이것이 실제로 필요한지 확인하십시오."라고 말함으로써 질문에 대한 답변을 왜곡하는 것이 재미 있다는 것을 이해하고 있으며, 이는 동료 개발자를 속이는 비교적 좋은 방법입니다. 그러나 이것은 디버깅 시나리오를위한 것이며 빠른 수정 (및 AlwaysUp과 같은 타사 응용 프로그램을 사용하는 대안)이므로 "왜"를 묻는 것이 유용한 응답인지 실제로 알지 못합니다. 어쨌든 고마워
omghai2u 2016 년

베드로는 요점이 있다고 생각합니다. 당신이 썼어야 할 질문은 "이것이 내가하려는 것입니다."입니다. 빠른 수정에는 미래의 고통 만 수반됩니다. 3 년이 지난 후에도 프로덕션에서 "빠른 수정"을 볼 수있는 "빠른 수정"을 몇 번이나 들었는지 셀 수 없습니다. . . 또 다른 "빠른 수정"이 필요합니다. 일종의 배치 스크립트를 실행하기 위해 입력하고 있다고 가정합니까?
surfasb

1
@surfasb 제안한 질문은 "내가 세션 0에서 cmd.exe를 시작하려고합니다."라는 본질적으로 내가 작성한 질문입니다. 그 질문에 대한 답변을 계속하십시오. 감사. 그리고 이것이 생산에 들어가거나 미래의 고통을 겪을 가능성은 없습니다. 프로덕션에 사용하는 방법은 이미 설정되었지만 디버깅에 사용할 수 없습니다. 현재 디버깅을 위해하는 방법은 번거롭고 타사 앱을 사용하는 것과 관련이 있습니다.
omghai2u 2016 년

답변:


19

세션 0에서 cmd.exe를 시작하려면 Sysinternals의 psexec를 사용하십시오.

psexec.exe -s 0 cmd.exe

이제 세션 0에서 콘솔이 실행 중입니다.

세션 0에서 cmd.exe를 시작하고 GUI를 표시 할 수도 있습니다.

psexec.exe -s -i 0 cmd.exe

세션 0으로 전환하면 cmd.exe가 대기합니다.

Windows 7에서 얻을 수있는만큼의 권한이 있습니다.

whoami /all

다른 PsTools를 사용하는 경우 / accepteula 스위치를 사용해야합니다.

pslist /accepteula

그렇지 않으면 프로그램이 Eula를 수락하라는 메시지 상자를 팝업합니다. 세션 0에 메시지 상자를 닫을 UI가 없기 때문에 프로그램이 중단됩니다.

세션 0에서 실행 중인지 확인하기 위해 qprocess를 사용할 수 있습니다.

qprocess /ID:0

모든 서비스 프로세스 중 'cmd.exe'가 표시됩니다.


내 질문에 대답 해 주셔서 감사합니다. 이것은 의견에 지적 된 바와 같이 내 의도가 분명히 작동하지만 타사 앱을 사용하지 않는 것이 었습니다. SysInternals 도구 (또는 실제로 Windows에서 제공되지 않는 도구)를 사용할 필요가없는 좋은 방법이 있습니까? 다시 감사합니다.
omghai2u

2
Sysinternal 도구 '타사'는 Microsoft의 도구라고 생각하지 않으므로 설치할 필요가 없습니다.
피터 한 도르프

죄송합니다. 기본적으로 "타사"로 설치되지 않은 것을 고려하고있었습니다.
omghai2u 2016 년

베드로. 좋아 고마워. 세션 0에서 프로세스를 시작하는 데 완벽하게 작동합니다 (로그 오프해도 계속 실행 됨).
Daniel James Bryars

5
첫 번째 명령 행이 잘못 -s되었습니다. SYSTEM사용자로 실행되며 인수를 사용하지 않습니다. 아마도 -i 0첫 번째 예와 -s -i 0두 번째 예에서 의미 한 것입니까?
jwg

1

작동하지 않습니다. 단지 시스템으로 프로세스를 시작합니다.

서비스는 서비스 제어 관리자의 명령을 수락하기 위해 특수하게 작성된 프로그램입니다.

MS에는 프로그램을 서비스로 실행할 수있는 유틸리티가 있습니다. SrvanyWindows 2003 Resource Kit Tools 라고 불리우고 있습니다.

Windows Server 2003 Resource Kit 도구 다운로드


0

언젠가 우연히 해결책을 찾았 지만 http://www.alex-ionescu.com/?p=59 또한 내가 찾은 것에 가까운 해결책을 문서화했습니다.

다음을 사용하여 배치 파일을 만듭니다 (some.bat라고 함).

start cmd

그런 다음 관리자 명령 프롬프트를 사용하여이 배치 파일을 호출하는 서비스를 만듭니다.

sc create access0 type= interact type= own binpath= some.bat

(각 = 뒤에 공백을 기록하고 some.bat에 전체 경로를 사용하는 것이 좋습니다)

그런 다음 서비스를 시작하는 문제입니다.

sc start ui0detect
sc start access0

(sc config UI0Detect start = auto로 ui0detect 자동 시작을하지 않아도됩니다)

그리고 모든 것이 잘되면, 당신은 임박한 메시지의 번쩍이는 상자를 얻을 것입니다! 메시지보기로 이동하면 실패한 서비스 시작으로 인해 자동으로 파괴되지 않는 관리자 (nt authority \ system) 명령 프롬프트가 표시됩니다 (따라서 start 명령으로 배치 파일이 필요함)

때로는 첫 번째 시도에서는 작동하지 않지만 작동합니다.

나는 이것이 nt authority \ system 사용자에게만 존재하는 대화 형 세션 0에만 액세스 할 수 있다고 생각합니다.


-2

바로 가기 시작 (Windows) + R을 사용하여 '실행'대화 상자를 시작할 수 있습니다. 거기에서 'cmd'(따옴표 제외)와 voila를 입력하십시오. cmd


3
수퍼 유저에 오신 것을 환영합니다. 게시물이 OP 질문에 답변 하지 않습니다 . CMD일반적으로 시작해도 하나에 들어 가지 않습니다Session 0 .
저는
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.