2016-07-22 1 views
2

메서드는 three arguments이고 그 중 세 번째 값은 프로그 램이 새로 생성 된 프로세스가 끝나기를 기다려야하는지 여부를 지정하는 부울 값입니다.bWaitOnReturn은 HTA에서 실행될 때 mstsc.exe에 아무런 영향을주지 않습니다.

mstsc.exe (Windows의 원격 데스크톱 연결 프로그램)에서 제대로 작동하려면이 문제가 발생합니다.

아래 파일을 test.vbs으로 저장하고 cscript test.vbs으로 실행하면 예상대로 작동합니다. 내가 HTA 파일에서 동일한 코드를 실행하려고하면

Set obj = CreateObject("WScript.Shell") 
Call obj.Run("notepad.exe", 1, true) 
MsgBox "You just closed notepad." 
Call obj.Run("mstsc.exe", 1, true) 
MsgBox "Remote desktop just closed." 

그러나이 제대로 작동하지 않습니다 - 오히려 mstsc.exe 실행 후 메시지 상자가 즉시 기다릴 필요가 나타납니다.

<html> 
<head> 
<script language="VBScript"> 
Sub RunProgram 
    Set obj = CreateObject("WScript.Shell") 
    Call obj.Run("notepad.exe", 1, true) 
    MsgBox "You just closed notepad." 
    Call obj.Run("mstsc.exe", 1, true) 
    MsgBox "Remote desktop is still open!" 
End Sub 
</script> 
</head> 
</body> 
<body onload=RunProgram> 
</html> 

왜 이런 일이 발생하고 어떻게 수정해야하는지 궁금하십니까?

편집 : 윈도우 10에서이 테스트를했는데 7

+0

가 재생할 수없는 차이를하지하고 함께 할 것입니다 의심 윈도우 10에서 동일한 얻을. 두 번째 메시지 상자는 두 경우 모두에서 RDP 연결을 닫은 후에 만 ​​나타납니다. –

+0

@AnsgarWiechers 어떤 운영 체제를 사용하고 있습니까? Windows 10에서이 문제가 발생했음을 언급 했어야합니다 ... (몇 대의 PC에서 시도해 보았습니다). –

+1

Windows 10에서 같은 결과를 얻었습니다. HTA가 32 비트로 실행되도록 설정되었지만 32 비트 버전으로 변경해도 mstsc가 아무런 차이가 없었습니다. –

답변

4

가 MSTSC의 64 비트 버전을 사용합니다. c:\windows\sysnative\mstsc.exeSysnative은 32 비트 프로그램이 System32 디렉토리에 액세스하도록합니다. C:\windows\system32에 액세스하려는 32 비트 프로그램은 c:\windows\syswow64으로 리디렉션됩니다.

내 첫 코멘트에서.

나는 나는 그것이 HTA는 32 비트로 실행하도록 설정되어 있지만, 심지어 32 비트 버전으로 MSTSC를 변경하면

+2

자세한 내용은 [파일 시스템 리디렉터] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx) –

+1

재미 있습니다. 당신의 도움을 주셔서 감사합니다! 이것은 나를 위해 그것을 고정. –

+0

또 다른 옵션은 64 비트 인터프리터 ('C : \ Windows \ System32 \ mshta.exe')로 HTA를 실행하는 것입니다. 어떤 이유로 Microsoft는 64 비트 버전의 OS에서도 32 비트 'mshta.exe'를 기본 인터프리터로 만들기로 결정했습니다. VBScript 파일은 기본적으로 'cscript.exe'의 64 비트 버전으로 실행됩니다. 'C : \ Windows \ SysWOW64'의 32 비트 버전으로 실행하면 HTA와 같은 동작을합니다. –

관련 문제