Damit habe ich mein Ziel erreicht. Es können alle notwendigen Einträge vorgenommen werden und ich stelle Sicher, durch das Deaktivieren der normalen Programmfunktion, dass keiner auf die Idee kommt das Programm immer "Als Administrator" auszuführen.
Und was machst du, wenn noch jemand unter XP als lokaler Admin arbeitet oder ab >= Vista die
UAC deaktiviert? In diesem Falle wäre dein Programm unbenutzbar, da alle Programmfunktionen deaktiviert werden.
Machs doch sauber und nimm die "runas" Geschichte und gib die auszuführende Option als Parameter an dich selbst weiter. Grade wenn es nur um Optionen geht. Dort brauchst du nach De/Aktivierung ja kein wirkliches Feedback in deiner
GUI anzeigen bzw. weißt ja im Erfolgsfall, wie der neue Status aussieht.
In die
DPR packst du sowas in die Art:
Delphi-Quellcode:
begin
if (ParamCount >= 1) then
begin
if (ParamStr(1) = '/toggle') then
begin
Beep(700, 1000);
Exit;
end;
end;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm3, Form3);
Application.Run;
end.
Und zum Togglen der Option sowas:
Delphi-Quellcode:
var
ExecInfo: TShellExecuteInfo;
begin
FillChar(ExecInfo, SizeOf(ExecInfo), #0);
ExecInfo.cbSize := SizeOf(ExecInfo);
ExecInfo.lpVerb := 'runas';
ExecInfo.lpFile := PChar(ParamStr(0));
ExecInfo.lpParameters := '/toggle';
if ShellExecuteEx(@ExecInfo) then
try
WaitForSingleObject(ExecInfo.hProcess, INFINITE);
finally
CloseHandle(ExecInfo.hProcess);
end;
end;