Entwickler-Ecke

Sonstiges (Delphi) - Registry lesen mit ActiveX aus Website heraus???


EbbiDos - Fr 02.06.06 05:16
Titel: Registry lesen mit ActiveX aus Website heraus???
Hi!

Ich progge momentan ein Verwaltungsprogramm mit PHP+MySQL, da der "Auftraggeber" von jedem Rechner auf der Welt (mit INet) verwalten möchte. Das Prog besitzt MultiUser-Management (wie ein Forum) und konfigurierbare Zugriffsrechte...
Nun möchte der Auftraggeber manchen Nutzern nur an einem bestimmten PC gewisse Zugriffsrechte erlauben -> bspl. am Büro-Rechner darf er alles und vom Heim-PC darf er nur bestimmte Aktionen durchführen.

Ich möchte dieses Feature mit einem Registry-Eintrag bewerkstelligen. Wenn die Login-Seite im Browser aufgerufen wird, soll ein ActiveX den Registry-Eintrag lesen und mithilfe von Javascript an eine <form>...</form>-Struktur übergeben. Nachdem der Nutzer den Login-Button gedrückt hat, übernimmt das PHP-Prog die Auswertung des Registry-Eintrags.

...Soviel als Hintergrundinfo...

Nun zu meinem Problem: Ich bin jungfräulicher ActiveX-Einsteiger. :shock:
Deshalb Frage 1) Wie erstelle ich in Delphi ein nicht-sichtbares ActiveX, dass sich als <object ...></object> in HTML einbinden lässt und zudem nicht mehr können muss, als eine Funktion bereitzustellen, die ich mit Javascript aufrufen kann?
(Das ActiveX soll Client-seitig ausgeführt werden und die enthaltene Funktion liest den Registry-Eintrag)

Frage 2) als was compilieren OCX, DLL, oder was?

Frage 3) classid bzw. GUID -> lässt sich das Registrieren oder Installieren des ActiveX-Dingens auf dem Client-PC für den Nutzer damit unsichtbar "steuern"? (Trojaner können das ja auch irgendwie...) Ich möchte nach Möglichkeit dann im Browser keine Meldung angezeigt bekommen: "...wollen sie das Programm installieren...?"


Ich hoffe, jemand kann mir da weiterhelfen...


digi_c - Fr 02.06.06 08:11

1.+2. Datei-Neu-ActiveX(Was genau weiß ich aber auch nicht :( Rest wird automatisch gemacht

3. Nein die normale Zone verbietet das, dafür extra Exploits zu verwenden halte ich für bedenklich bzw. es ist nicht sichergestellt, das die funktionieren.

Kann man sowas nicht direkt clientseitig über Javascript machen? Firefox unterstützt z.B. kein ActiveX. Oder ich würde das irgendwo auf Serverebene probieren zu verankern... Bin aber kein Web-Entwickler...


EbbiDos - Fr 02.06.06 08:40

Ich hatte mich bereits mit den Wizards von Delphi auseinandergesetzt, aber die wollen immer nur TActiveForm oder ActiveX-Komponenten (VCL) erstellen.
Das ActiveX soll im Grunde nichts anderes können als eine DLL, in der eine einzige Funktion gekapselt ist (z.B. function GetVersion: PChar; export;)
Entweder hab ich die entsprechenden Einstellungen noch nicht gefunden, oder es gibt sie einfach nicht in den Wizards.

Mit Javascript geht das nicht. Ich hab zwar nicht nachgesehen, aber Javascript ist Betriebssystem-unabhängig und wenn schon Datei-Handling nicht geht, bin ich mir ziemlich sicher, dass das Registry-Lesen erst recht nicht geht.


mkinzler - Fr 02.06.06 08:43

Zitat:
Kann man sowas nicht direkt clientseitig über Javascript machen?
Dann würd ich mir stark überlegen ins Internet zu gehen :-(
Über ActiveX ist es schon möglich, MS macht das beim Automatischen Update auch nichts anders. Mit einem signierten Java-Applet könnte es auch funktionieren. Ich würde aber versuchen eine andere Lösung zu finden.


digi_c - Fr 02.06.06 11:00

Knackbar ist alles, darüber müssen wir ja nicht diskutieren. Das beste wäre wirklich ein MAC Filter auf dem Server, der durch PHP gemanaget würde. Aber auch MACs kann man ja verzerren ;-)


69hamsta69 - Fr 02.06.06 11:05
Titel: Re: Registry lesen mit ActiveX aus Website heraus???
user profile iconEbbiDos hat folgendes geschrieben:
Wie erstelle ich in Delphi ein nicht-sichtbares ActiveX, dass sich als <object ...></object> in HTML einbinden lässt und zudem nicht mehr können muss, als eine Funktion bereitzustellen, die ich mit Javascript aufrufen kann?
(Das ActiveX soll Client-seitig ausgeführt werden und die enthaltene Funktion liest den Registry-Eintrag)

ActiveX tutorial -> http://dsdt.info/tutorials/activex/


LG hamsta


EbbiDos - Fr 02.06.06 21:50
Titel: Re: Registry lesen mit ActiveX aus Website heraus???
Ich hatte bereits erwähnt, dass die Wizards nur VCL oder TActiveForm-Applikationen erstellen. Das Tutorial nutzt auch nur die Wizards von Delphi. Damit kann ich aber keine nicht-sichtbaren ActiveX-Anwendungen erstellen.

Ich geb einfach mal Code-Äquivalent einer DLL an:

accctrl.dpr
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
library accctrl;

uses
  ComServ,
  main;

exports
  GetRegUsers;

{$R *.RES}

begin
end.


und


main.pas
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
unit main;

interface
uses Windows,Registry;

function GetRegUsers: PChar; export;

implementation

function GetRegUsers: PChar;
var reg: TRegistry;
    val: String;
begin
  reg := TRegistry.Create(KEY_READ);
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    if reg.OpenKey('SOFTWARE\TEST',false) then
    begin
      val := reg.ReadString('users');
      reg.CloseKey;
    end;
  finally
    reg.Free;
  end;
  Result := PChar(val);
end;

end.


Mehr soll das ActiveX auch nicht machen.


EbbiDos - Sa 03.06.06 21:14

bumb