Announcement

Collapse
No announcement yet.

DCOM-Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DCOM-Problem

    Hallo,

    gibt es eine Möglichkeit, ein COM-Objekt von einem Client-Rechner aus auf einem Server-Rechner zu erzeugen, ohne Kenntnis der ClassID und ohne Typlibrary des COM-Objektes auf der Client-Rechner-Seite, lediglich mit Kenntnis der ProgID.
    Die Funktion CreateRemoteComObject erwartet die GUID als Übergabeparameter
    und ohne Typelibrary auf dem Clientrechner kann ich die ProgID nicht in die GUID umwandeln !

  • #2
    Hallo,

    mir fällt auf die Schnelle nur der Weg über RDS ein - das DataSpace-Objekt erlaubt in Funktion eines "Brückenkopfobjekts" den Aufruf der DataSpace-Methode <b>CreateObject</b>, bei der nur die ProgID und der Name des Zielrechners übergeben werden muss. Im Fall von RDS findet der Umtausch ProgID -> ClassID erst auf dem Zielrechner (genauer gesagt über die ADISAPI-Komponente, die von Microsoft als Bestandteil des IIS ausgeliefert wird) statt.
    <pre>
    uses ComObj, ActiveX, ADOInt;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    aIU : IUnknown;
    aDS : DataSpace;
    Status : HResult;
    vDF : OleVariant;
    begin
    Status := CoCreateInstance(CLASS_DataSpace, nil,
    CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER,
    IUnknown, aIU);
    OleCheck(Status);
    aDS := aIU as DataSpace;
    vDF := aDS.CreateObject('SimpleDCOM.SimpleDCOMObj', 'P4W2K');
    ...
    end;
    </PRE>
    P.S: Damit das COM Objekt von außen über RDS gestartet werden kann, muss ein Berechtigungs-Schlüssel in der Registry des Servers eingetragen werden. Unter <i>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Ser vices\W3SVC\Parameters</i> wird dazu ein neuer Schlüssel mit der ProgID des COM-Objekts angelegt.

    Comment


    • #3
      Danke für den schnellen Tip, werd ich ausprobieren :

      Comment

      Working...
      X