2013-02-11 3 views
5

로컬 COM 서버를 공용 계정으로 강제 실행하려면 어떻게합니까 (로컬 시스템이 좋을까요?)? RunAs 설명서는 DCOM에만 해당되며 로컬로 작동하지 않습니다.COM out of process 서버가 여러 인스턴스를 시작합니다.

내가 직면 한 문제는 다른 데스크톱에서 실행중인 프로세스에서 내 CoCreateInstance가 호출되고이 시나리오에서 SCM이 각 데스크톱에 대해 새 서버를 시작하려고한다는 것입니다. 설계된대로 단일 인스턴스 만 필요합니다!

+0

[ServerFault?] (http://serverfault.com/)에 더 적합합니까 – Piccolo

+0

DCOM도 로컬 서버에 사용됩니다. 'DCOM Config'을 사용하고'Identity '를 변경하려고 시도 했습니까? – sharptooth

+0

차이는 없습니다. 작업 관리자에서 시스템을 볼 수 있지만 명령 줄에서 실행하면 여전히 내 ID로 실행됩니다. – user1371314

답변

0

설명하는 것은 COM 서버가 아닌 시스템 서비스입니다. COM 서버는 "세션 0"(서비스) 또는 단일 세션에서 실행되는 것이 아니라 어떤 세션에서 실행되도록 설계되었습니다. 1 세션에서만 실행되며 다른 모든 세션에 전역으로 액세스 할 수있는 것이 필요한 경우 COM 서버가 아닌 Windows 서비스를 사용해야합니다.

다른 이유로 COM 서버 측면이 필요하지만 전역 적으로 리소스를 공유하고 싶거나 필요한 작업을 제어하는 ​​"하나의 프로세스"가 필요한 경우 COM 서버가 무엇이든 사용하여 서비스와 통신하도록 할 수 있습니다 원하는 IPC 방법.

또한 "사용자가 명령 줄에서 실행할 때"라고 말합니다. 명령 줄에서 EXE를 실행하면 COM 서버로 등록되어 있는지 여부는 중요하지 않습니다. EXE를 COM 서버로 등록하면 다른 프로세스가 해당 EXE를 실행하고 OLE를 통해 통신 할 수 있습니다./COM하지만 EXE는 여전히 일반 앱으로 실행될 수 있습니다. 예를 들어 Microsoft Word와 Outlook은 모두 COM 서버입니다. 즉, outlook.exe는 COM 서버이지만 일반 응용 프로그램으로도 실행할 수 있습니다.

+0

감사합니다. 나는 이미 Windows 서비스로 전환했으며 완벽하게 작동합니다. – user1371314