DeviceManager aufrufen

Hallo,
beschäftige mich nach vielen Jahren wieder mal mit Delphi :smile:

Mein Problem:
Ich möchte von einer kleinen Applikation aus
den Gerätemanager von Windoofs aufrufen.
Habe Jedi-Packages -> JvCreateProcess

Einfacher Aufruf von Exe-File klappt z.B. mit

JvCreateProcess1.run;

Aber beim Devicemanager geht es nicht so einfach.

Den Devicemanager kann man ja direkt per Verknüpfung mit

%windir%\System32\devmgmt.msc 

aufrufen, aber das so einfach in JvCreateProcess
eingeben, klappt nicht (Systemfehler Code 193).

Natürlich kommt noch dazu, dass ich den Aufruf auch mit
Adminrechten brauche.
Ziel ist es hauptsächlich virtuelle COM-Ports umzuparametrieren.
-> COM-Portnummer ändern.
Evtl. gibt es da aber auch noch einen ganz andere Lösung.

Weiß jemand, wie das geht?
Gruß Uwi

Hi Uwi

Nun, ich denke, die einfachste Variante ist mit der Funktion ShellExecute(). Hier ein Beispiel:

procedure TForm1.TestClick(Sender: TObject);
var
ires:longint;
begin
ires:=ShellExecute(Form1.Handle,‚open‘,pchar(‚devmgmt.msc‘),’’,’’,SW_SHOWNORMAL);
end;

Einfach noch die Unit ShellAPI in die usese-klauses aufnehmen. Das Problem mit dem Admin-Rechten wirst du aber so oder so haben, das lässt sich nicht umgehen, ohne ein Admin-Kennwort zu kennen.

Gruss
Sam99

Hallo,
ich danke dir,
deine vorgeschlagene Variante funktioniert schon mal ganz gut :smile:

Die Sache mit dem Adminrechten ist damit leider noch nicht gelöst.
Vielleicht hast du dafür auch noch eine Lösung?

Der Hintergrund ist der, dass man zwar mit eingeschränkten Rechten
ein Programm starten kann, aber für Parametrierungen im Devicemanager
dann natürlich ein Admin-Passwort eingeben muß.

Das betrifft z.B. Firmenrechner, wo man sich nur mit eingeschränkten
Rechten im Firmennetzwerk einloggen kann, aber für bestimmte Aufgaben
als „lokaler Admin“ ein Passwort nutzen kann.
Wenn man also als normaler User z.B. den Link zum Devicemanager
anklickt, kann man statt direktem Aufruf auch „Ausführen als …“
(Run as …) nutzen:
http://uwiatwerweisswas.dyndns.org/Uwi/WWW/Starten_a…
Geht das also irgendwie auch mit „ShellExecute“

Falls es dich interessiert, ich mache eben mal ein kleines Hilfstool,
mit dem mit aktuell genutzte virtuelle COMPorts angezeigt bekommt
und auch signalisiert wird, wenn ein neues dazu kommt oder eines
verschwindet.
Wir arbeiten sehr viel mit solchen COMPorts in Verbindung mit
USB to UART Umsetzern (FT232R). Wenn man da eine Verbindung herstellt,
macht Windows ja immer ein neues Port auf, aber man weiß nicht,
welche Nummer das jetzt eben hat.
Wenn da schon einige genutzt werden, ist es ja nur eine unter mehreren.
Manche Programme haben auch sehr eingeschränkte Möglichkeiten bei
der Nutzung von COMPorts. Wenn sich da also ein COM23 anmeldet, aber
das Programm nur COM1…5 unterstützt, dann muss man natürlich erst
im Devicemanager die COMPort-Nr. ändern.

Wenn du möchtest, kannst de es ja mal ausprobieren.
http://uwiatwerweisswas.dyndns.org/Uwi/WWW/PortList.exe
Gruß Uwi

Nun, ich denke, die einfachste Variante ist mit der Funktion
ShellExecute(). Hier ein Beispiel:
procedure TForm1.TestClick(Sender: TObject);
var
ires:longint;
begin
ires:=ShellExecute(Form1.Handle,‚open‘,pchar(‚devmgmt.msc‘),’’,
’’,SW_SHOWNORMAL);
end;

Einfach noch die Unit ShellAPI in die usese-klauses
aufnehmen.

Das Problem mit dem Admin-Rechten wirst du aber so
oder so haben, das lässt sich nicht umgehen, ohne ein
Admin-Kennwort zu kennen.

Ergänzung
Hallo,
habe eben mit „Runas.exe“ experimentiert.
Leider geht das aber wohl ab Vista nicht mehr.
Ein Lösung sollte aber nicht nur für XP funktionieren.
Gruß Uwi

Hi Uwi

Es ist natürlich Sicherheitstechnisch etwas bedenklich, ein Admin-Login fest in einer Applikation fest zu hinterlegen. Aber vielleicht findest Du hier hilfreiche Hinweise:

http://forum.delphi-treff.de/showthread.php?17891-Di…

Gruss
Sam99

Hallo,

Es ist natürlich Sicherheitstechnisch etwas bedenklich, ein
Admin-Login in einer Applikation fest zu hinterlegen.

Nö, das will ich ja gar nicht.
Der User soll ja den Usernamen und Adminpaswort eingeben.
(so wie bei Runas)

Aber vielleicht findest Du hier hilfreiche Hinweise:
http://forum.delphi-treff.de/showthread.php?17891-Di…
Ausf%FChren-als-quot

Danke, das schaue ich mir gerne mal an.
Gruß Uwi