Hallo,
ich danke dir,
deine vorgeschlagene Variante funktioniert schon mal ganz gut
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.