2013-02-11 5 views
5

Wie erzwingen Sie, dass ein lokaler COM-Server unter einem gemeinsamen Konto ausgeführt wird (lokales System wäre gut)? Die RunAs-Dokumentation scheint nur für DCOM zu sein und funktioniert nicht lokal.COM aus Prozessserver startet mehrere Instanzen

Das Problem ich konfrontiert ist, dass meine CoCreateInstance von Prozessen aufgerufen wird, die auf verschiedenen Desktops laufen und der SCM in diesem Szenario will einen neuen Server für jeden Desktop zu starten, ich möchte nur eine einzige Instanze - wie geplant!

+0

Wäre das besser für [ServerFault?] (Http://serverfault.com/) geeignet – Piccolo

+0

DCOM wird auch für lokale Server verwendet. Haben Sie versucht, 'DCOM Config' zu verwenden und' Identity' zu ändern? – sharptooth

+0

Sicher haben, ohne Unterschied. Ich würde erwarten, dass im Task-Manager SYSTEM angezeigt wird, aber wenn ich über die Befehlszeile laufen, läuft es immer noch unter meiner ID – user1371314

Antwort

0

Was Sie beschreiben, ist ein Systemdienst, kein COM-Server. Ein COM-Server ist so konzipiert, dass er unter welcher Sitzung auch immer ausgeführt wird, nicht unter "Sitzung 0" (Dienste) oder einer einzelnen Sitzung. Wenn Sie etwas benötigen, das nur unter einer Sitzung läuft und globalen Zugriff auf alles andere hat, sollten Sie einen Windows-Dienst und keinen COM-Server verwenden.

Wenn Sie den COM-Server-Aspekt aus anderen Gründen benötigen, aber Ressourcen global freigeben möchten oder noch über einen Prozess verfügen, der alles steuert, was Sie tun müssen ... können Sie Ihren COM-Server mit Ihrem Dienst kommunizieren lassen IPC-Methode, die Sie bevorzugen.

Auch in Ihren Kommentaren sagen Sie "wenn ich von der Befehlszeile ausführen" - wenn Sie eine EXE von der Befehlszeile ausführen, ist es egal, ob es als COM-Server registriert ist oder nicht, es läuft wie jede andere EXE/App - was bedeutet, dass es als beliebiger Benutzer ausgeführt wird, egal in welcher Sitzung Sie sich befinden. Das Registrieren einer EXE als COM-Server erlaubt anderen Prozessen, diese EXE auszuführen und über OLE mit ihr zu kommunizieren/COM, aber die EXE kann immer noch als normale App ausgeführt werden. Zum Beispiel sind Microsoft Word und Outlook beide COM-Server. Das heißt, Outlook.exe ist ein COM-Server, aber natürlich können Sie es auch als eine normale Anwendung ausführen.

+0

Danke, verstanden. Ich habe bereits zu einem Windows-Dienst konvertiert und das funktioniert perfekt. – user1371314