2010-12-08 2 views
0

서비스를 중지하고 파일을 복사 한 다음 서비스를 다시 시작하는 응용 프로그램이 있습니다. 진행률 표시 줄과 추가 창을 표시하지 않고 화면을 변경하지 않고 UAC가 그 일을하고 거기에서 계속하도록합니다 (구성 프로그램이므로 복사본에 방패 아이콘이있는 표준 사용자로 계속 사용할 수 있음). 단추).승격 된 응용 프로그램에 CopyData를 사용하는 좋은 대안은 무엇입니까

관리자가 별도의 응용 프로그램 (별도의 msiexec과 같은 보이지 않는 응용 프로그램)을 열면 새로운 응용 프로그램이 실행되고 SendMessage를 통해 진행률 보고서가 다시 전송됩니다. 이 잘 작동하지만 SendMessage 경우에만 관리/비 관리 응용 프로그램간에 작동합니다. ShellExecute가 꺼져 있어야하고 "runas"에 ShellExecute가 필요하기 때문에 StandardInput을 리디렉션하는 기능이 작동하지 않습니다.

파일을 사용하고 싶지 않습니다. 속도가 느리고 보안 위험이 있습니다. 이전에 명령이 포함 된 CopyData 메시지와 함께 키 코드를 보내고있었습니다. StandardInput/Output을 리디렉션 할 수있는 다른 방법이 있습니까? MSI는 어떻게합니까?

저는 이것을 위해 C#을 사용하고 있습니다.

+1

프로세스 간 통신을 수행하는 다른 방법으로는 파이프, 소켓, 메모리 맵 파일, WCF 등이 있습니다. 이것을 고려 했습니까? –

+0

... 실제로, 아니. 우리는 CopyData를 사용하고 명령 줄 스트림을 다른 곳으로 리디렉션 했으므로 전혀 문제가되지 않았습니다. 이전에 메모리 매핑 된 파일을 사용 해본 적이 없지만 소켓은 훌륭하게 작동합니다. – Patrick

+0

답변으로 표시 하겠지만 의견은 upvoted 수 있습니다 ... – Patrick

답변

0

나는 Simon과 같이 파이프를 제안하려고했습니다. 트릭의

하나는, 그러나, 높은 무결성 프로세스가 파이프를 작성하고 중간 무결성 프로세스가 액세스 할 수 있도록 매체 필수 무결성 수준으로 태그를 할 필요가 있다는 것입니다.

관련 문제