다른 Windows 탐색기 쉘을 시작한 후 어떻게 시작합니까?


6

다음은 해킹이지만, 내가 필요로하는 것에 대해서는 괜찮습니다.

일부 EULA 텍스트를 표시하고 Agree and Disagree 버튼이있는 C # 프로그램을 만들었습니다.

나는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell 그 프로그램을 시작합니다.

컴퓨터가 부팅되면 일반 로그인 프롬프트가 표시됩니다.

로그인하면 사용자 정의 EULA 프로그램이 실행됩니다.

탐색기 셸, 시작 메뉴, 배경 없음 등은 없습니다 (내가 원하는대로).

동의하지 않는 버튼은 PC를 종료하고 정상적으로 작동합니다.

Agree 버튼이 일반 윈도우 탐색기 셸 (시작 메뉴, 배경 등)을로드하길 원합니다.

다음 C # 명령을 사용했습니다. Process.Start("explorer.exe");

그러나 이것은 쉘이 아닌 탐색기 창을 시작합니다. 나는 껍질을 발사하길 원해.

내가 뭘 놓치고 있니?


2
Explorer.exe를 호출 할 때 이미 데스크톱 프로세스로 실행중인 explorer.exe입니까? 로그인을 위해 실행중인 탐색기 인스턴스가 없으면 데스크톱 프로세스가 생성되지만 이미 실행중인 경우 탐색기 창이 생성됩니다. 응용 프로그램이 어떤 상황에서 실행되고 있습니까? 로그인하기 전이라고 가정합니까? 그렇지 않다면 netlogin 프로세스가 이미 데스크톱 프로세스를 생성했을 것입니다.
Frank Thomas

아니요, 사용자 지정 셸을 시작할 때 explorer.exe가 실행되고 있지 않습니다. 동의 버튼을 클릭하기 전까지는 실행되지 않습니다. 나는 explorer.exe가 아닌 다른 것을 시작할 필요가 있다고 가정한다 ... 나는 모른다. ..
Keltari

RDP 연결을 위해이 작업을 수행하고 있습니까? 아니면 로컬로 로그온 한 사용자에 대해서도 EULA를 표시해야합니까? RDP 만 사용하려고하면 이 그룹 정책 (IE가 아닌 다른 브라우저에서는 사이트가 불안정 할 수 없습니다).
Scott Chamberlain

이 기사를 보면,이 방법이 작동하지 않는 것처럼 보입니다 ... social.technet.microsoft.com/Forums/windows/ko-KR/...
Keltari

1
EULA를 보여주기 위해 쉘 전체를 교체해야 할 필요성에 대해 큰 의문을 가졌습니다. 지역 문제에 대한 글로벌 솔루션.
surfasb

답변:


3

Windows 10에서 Explorer Desktop을 다시 시작하려면 Shell 레지스트리 키를 "explorer.exe"로 설정하고 "sihost.exe"프로세스를 종료하거나 새 "sihost.exe"프로세스를 다시 시작해야합니다.


sihost.exe를 다시 시작하면 문제가 해결됩니다. 고마워요!
cheeesus

2

나는 똑같은 일을 당신이하고있는 것처럼 여기 있습니다, 어떻게 탐색기를 시작할까요?

Process explorer = new Process();
explorer.StartInfo.FileName =
    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "explorer.exe");
if (explorer.Start() == false)
{
    MessageBox.Show("Explorer failed to start.");
}
else
{

    //(Snip) some other code that is not relevant.

    explorer.WaitForExit();
}

//(Snip) some cleanup code I run after the user logs off.

그리고 그것은 잘 작동합니다.

이제 저는 RDP 세션에서 이것을 사용하고 있습니다. 이 그룹 정책 ( Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Remote Session Environment\Start a program on connection ) 당신이 사용하고있는 레지스트리 파일을 통해서가 아니라 아마 그것이 내가 당신을 위해서가 아니라 당신을 위해 일하는 이유 일 것입니다.

내가 다른 일을 할 수도있는 또 하나의 일은 내가 또한 부름이다. explorer.WaitForExit(); 내 코드에서 탐색기가 닫힐 때까지 기다렸다가 내 앱을 닫습니다.

탐색기를 시작하는 방식으로 시도해보고 탐색기가 작동하는지 확인하십시오.


나는 당신의 코드를 시도했으나 쉘이 아닌 파일 탐색기 창을 시작했다.
Keltari

@Keltari 로컬 로그인을 지원해야합니까, 아니면 RDP 사용자의 EULA가 사용자가 원하는 것을 위해 작동하는지 만 표시합니까?
Scott Chamberlain

1

익스플로러는 셸 (shell)으로 실행하기 위해 충족해야 할 몇 가지 조건을보아야합니다.

  1. 탐색기를 실행하면 안됩니다 (예 : 제어판 포함).
  2. 익스플로러는 그것이 실제 셸인 것을 알아야합니다 - 따라서 explorer.exe를 시작하기 전에 그 값을 대체해야합니다 (몇 초 후에 다시 변경할 수 있습니다)
  3. 때로는 (최신 Windows 버전에서) explorer.exe를 시작하는 프로세스에 따라 다름 - explorer.exe에 "알려진"경우 -이 부분에 대한 자세한 내용은 없습니다. 그것을 변경, 불행히도)

귀하의 질문을 판단 할 때 최소한 파트 2는 누락되었습니다.


-1

레지스트리를 수정하고, explorer.exe를 쉘에 넣고, 새로운 explorer.exe 프로세스를 시작합니다 (explorer.exe를 실행하지 않습니다). 쉘을 쉘에 반환합니다 (필요하면 빈 값).


1
이것을 명확한 영어로 다시 작성하십시오 (정확한 문법을 ​​사용하여 여러 문장 완성). ''레지스트리 수정 ''과 같은 단축키를 사용 가능한 명령어로 확장하십시오. 의견으로 응답하지 마십시오. 편집하다 당신의 대답은 그것을 더 명확하고 더 완벽하게합니다.
G-Man
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.