DCOM: CoCreateInstanceEx gibt E_ACCESSDENIED
Arbeite ich an einer DCOM-Anwendung mit dem server und client auf beiden Maschinen, beide sind in der Laufenden WinXP mit Service Pack 2. Auf beiden Maschinen, ich bin angemeldet mit dem gleichen Benutzernamen und Passwort.
Wenn der client auf einer Maschine ruft CoCreateInstanceEx, fragt die andere Maschine zu starten der server-Anwendung, es gibt E_ACCESSDENIED.
Ich versuchte, die in der server-app die Eigenschaften der Komponente in dcomcnfg, und indem Sie die volle permisions an alle für alles, aber das hat nicht geholfen.
Was muss ich tun, damit dieser Aufruf erfolgreich ausgeführt werden kann?
Update:, Wenn die server-Anwendung läuft auf einem Windows 2000-box, die ich nicht bekomme diese Fehlermeldung; CoCreateInstanceEx gibt S_OK zurück.
InformationsquelleAutor Isaac Moses | 2008-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Recht, also, wenn Ihr Authentifizierungsebene auf Standard gesetzt. Was ist die Authentifizierungsebene, die in den Standard-Einstellungen? Nur aus Interesse. (obwohl die Tatsache, dass es funktioniert, um eine 2000 box wahrscheinlich macht, dass redundante)
EDIT:
Außerdem: ich glaube mich zu erinnern, tut eine Menge Neustart, wenn ich verwendet, um zu spielen/arbeiten mit DCOM also vielleicht für einen schnellen Neustart der beiden Maschinen, wenn Sie zufrieden mit der dcomcnfg Einstellungen nicht amis.
InformationsquelleAutor Shaun Austin
Wenn die PCs sind nicht beide Mitglieder derselben Domäne sind, müssen Sie auch starten & Zugriffsrechte für "ANONYMOUS-ANMELDUNG". "Jeder" nicht enthalten.
InformationsquelleAutor Taneli Waltari
Drei Dinge zu überprüfen:
1) Gehen Sie zurück zu dcomcnfg ein und machen versuchen, indem Sie sicher, dass nicht nur der Zugriff auf die Sicherheit, sondern auch die "launch Berechtigungen" Abschnitt enthält die entsprechende Sicherheit von Benutzern oder Gruppen.
2) stellen Sie Sicher, dass die Authentifizierung festgelegt ist etwas anderes als "None"
3) überprüfen Sie Auch, dass der Speicherort auf der Festplatte, dass die Komponente befindet, ist tatsächlich erreichbar, um das Konto konfiguriert die Sicherheit Berechtigungen, die Sie festlegen.
EDIT:
Einer mehr: rufen Sie an CoInitialiseSecurity() zuerst zu? Dass klingelt!
EDIT2:
Basierend auf Ihrem aktualisieren: Versuchen Sie, fallen die firewalls komplett auf beiden XP-Rechnern und sehen, ob das einen Unterschied macht. Informieren Sie DCOM durch explizit.
InformationsquelleAutor Shaun Austin
Was ist der Geschmack Ihrer Windows 2000-box, btw? Professional, Server, Adv Server...
Außerdem gibt es einen Unterschied zwischen Domänen-Mitgliedschaft zwischen den beiden (auf einer domain, die anderen nicht, die verschiedenen domains, etc...?)
Eins noch - DCOM-Fehler erscheint in der System-event-log-in-Zeiten - vor allem für Objekt-Erstellung - haben Sie es für Hinweise?
InformationsquelleAutor Eli
Ich hatte genau das gleiche problem.
Das problem passiert in Maschinen, die auf XP SP2+ OS oder neuer.
Ich löste es mit den folgenden Schritten:
Stellen Sie sicher, dass client und server-Computer sind auf der gleichen domain.
Müssen Sie mit dem gleichen user in beiden Rechnern, oder, wenn Sie wollen, verwenden verschiedene Benutzer-client und-server, den Sie brauchen, um stellen Sie sicher, dass sowohl client-und server-Benutzer haben privliges auf beiden Computern (insbesondere stellen Sie sicher, dass Sie Mitglieder der Verteilten COM-Benutzer-Gruppe.
öffnen Componenet-Dienste-MMC (dcomcnfg).
Gehen Sie zu Arbeitsplatz->Eigenschaften->Standard-Eigenschaften und stellen Sie sicher, dass Standard-Impersenation Ebene "Identifizieren"
Gehen Sie zur Registerkarte COM-Sicherheit, sowohl in der Access-Berechtigungen und die Start-und Aktivierungsberechtigungen gehen Sie auf Limits Bearbeiten, und fügen Sie die Lokalen und Remote-access-Berechtigungen für die client-und server-Benutzern in Ihrer COM-Anwendung
Stellen Sie sicher, dass Sie eine firewall-Ausnahme für in-port 135 für Ihre Anwendung...
Ich hoffe, dies hilft Ihnen!
InformationsquelleAutor Rubinsh