2009-11-20 2 views
5

Cygwin sshd를 통해 Windows로 ssh하고 로그인 한 Windows 사용자의 데스크탑에서 프로그램을 시작할 수 있습니까?Windows에 ssh (sgd sshd를 통해)를 ssh하고 로그인 한 Windows 사용자의 데스크탑에서 프로그램을 시작할 수 있습니까?

다른 말로하면, ABC가 Windows에 로그인되어 있고 원격 사용자가 ssh를 통해 ABC의 로그인/암호로 로그인하면 원격 ABC가 로컬 ABC 사용자의 데스크톱에서 응용 프로그램을 팝업 할 수 있습니까?

이 작업을 수행하는 동기가 프로그래밍 방식이기 때문에 Stackoverflow가 아닌 ​​Serverfault에서이 질문을하고 있습니다. 원격 호출은 리눅스 박스에서 나오므로 WMI 또는 다른 접근법을 사용하여이 작업을 수행하는 것이 가능할 수도 있지만 ssh는 가장 단순한 것처럼 보입니다.

더 간단하고 더 나은 대안을 듣기를 바랍니다.

감사합니다.

답변

1

cygwin sshd가 권한있는 계정으로 실행 중이면 현재 데스크톱의 핸들을 가져 와서 창을 띄울 수 있습니다. CreateProcess에 대한 STARTUPINFO의 데스크탑 매개 변수를 참조하십시오.

+0

아, 덕분에 좋은 출발점이되었습니다. – Atlas1j

1

내 솔루션입니다. Windows XP에서 테스트되었습니다 (하지만 약간의 노력으로 Windows 환경에서 실행해야한다고 생각합니다).

psexecquser 명령을 사용해야합니다.

먼저, psexec에과 Cygwin에서의 PATH 환경 변수에 포함 된 디렉토리에 QUSER을 넣어. 이 파일들을 cygwin의 bin 디렉토리에 복사하십시오.

당신은 당신의 %에 quser.exe SYSTEM32 % \ dllcache에 디렉토리를 찾을 수 있습니다. 그러나 cygwin 명령 (예 : ls, cp 등)을 통해 어떤 이유로 든 액세스 할 수 없으며 (언급 된 디렉토리에 액세스 할 수 없음) cygwin \ bin 폴더에 대한 Microsoft의 복사 명령을 사용하여 복사본을 만들었습니다.

Notes : Cygwin의 bin 폴더에 psutils를 모두 포함하는 것이 유용하다고 생각합니다. 처음이 유틸리티 중 하나를 실행하면 Microsoft 경고에서 사용권 계약을 수락해야하므로 Windows 탐색기에서 psexec를 처음 실행하십시오.

그런 다음 .bash_profile을 파일에 이러한 별칭을 만들 :

alias winrun='psexec \\\\YOU_USERNAME_HERE -d -i `quser | grep YOU_USERNAME_HERE | grep console | awk "{print \\\$3}"`' 
alias explorethis='winrun explorer $(cygpath -w `pwd`)' 

당신이 명령의 인수로 전달해야하는 경우 cygpath를 사용하여 현재 디렉토리를 번역해야 함을 기억하십시오 ("explorethis"는이다 그 예).