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.
Wäre das besser für [ServerFault?] (Http://serverfault.com/) geeignet – Piccolo
DCOM wird auch für lokale Server verwendet. Haben Sie versucht, 'DCOM Config' zu verwenden und' Identity' zu ändern? – sharptooth
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