Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi [Win Vista/7] Adminrechte zur Laufzeit benötigt (https://www.delphipraxis.net/144583-%5Bwin-vista-7%5D-adminrechte-zur-laufzeit-benoetigt.html)

MuTzE.Y85 11. Dez 2009 13:00


[Win Vista/7] Adminrechte zur Laufzeit benötigt
 
Hi,

ich habe schon gesucht, aber nix so wirklich gefunden.

Es geht um folgendes. Ich habe einen Texteditor, der ja normal keine Adminrechte benötigt.
Man hat aber die Möglichkeit, im Programm zu wählen mit welchen Dateiendungen dieser verknüpft werden soll.
Dazu benötige ich dann Adminrechte. Sowas habe ich schon mal bei einem Programm gesehn. Dort war dann das Shield Icon drauf und wenn man den Button drückt kommt die UAC Abfrage und man konnte seine Einstellung vornehmen. Jetzt wollte ich fragen, wie die das machen?

Das mit dem Shield Icon weiss ich schon wie das geht.

MfG

Jakson 11. Dez 2009 14:16

Re: [Win Vista/7] Adminrechte zur Laufzeit benötigt
 
Dazu gebits hier schon genügend Beispiele und sogar ein Video von Daniel

http://www.delphipraxis.net/internal...t.php?p=735677

Das Beispiel darin hat das am besten weiter geholfen http://www.delphipraxis.net/internal...t.php?p=849987

Meine Interpretation:
Delphi-Quellcode:
function RunAsAdmin(ParentForm:TForm;Programm:String;Parameter:String='';Directory:String='';WaitForProgramm:Boolean=False):Boolean;
var ShellInfo    : TShellExecuteInfo;
    ProcessResult : DWord;
begin
 Result := False;
 if FileExists(Programm) then
  begin
   FillChar(ShellInfo,SizeOf(ShellInfo),0);
   ShellInfo.cbSize       := SizeOf(ShellInfo);
   ShellInfo.Wnd          := ParentForm.Handle;
   ShellInfo.fMask        := SEE_MASK_FLAG_DDEWAIT OR SEE_MASK_FLAG_NO_UI OR SEE_MASK_NOCLOSEPROCESS;
   ShellInfo.lpVerb       := 'runas';
   ShellInfo.lpFile      := PChar(Programm);
   if Parameter <> '' then
    ShellInfo.lpParameters := PChar(Parameter);
   if Directory = '' then
    Directory := ExtractFilePath(Programm);
   ShellInfo.lpDirectory := PChar(Directory);

   ShellInfo.nShow        := SW_SHOWNORMAL;
   Result                 := ShellExecuteEx(@ShellInfo);
   if WaitForProgramm AND Result AND (ShellInfo.hProcess <> 0) then
    begin // Es soll gewartet werden UND Erfolgreich gestartet UND Handle bekommen
     try
      ParentForm.Enabled := False;
      while GetExitCodeProcess(ShellInfo.hProcess,ProcessResult) AND (ProcessResult = STILL_ACTIVE) do
       begin
        Application.ProcessMessages;
        Sleep(2);
       end;
     finally
      CloseHandle(ShellInfo.hProcess);
      ParentForm.Enabled := True;
     end;
    end;
  end;
end;
wobei ich RunAsAdmin(ParamStr(0),'/config','',True) verwende

MuTzE.Y85 11. Dez 2009 15:10

Re: [Win Vista/7] Adminrechte zur Laufzeit benötigt
 
Gibts da keine andere Möglichkeit?
Weil dann hab ich das Programm ja 2 mal offen!

Hm...

MuTzE.Y85 10. Jan 2010 16:57

Re: [Win Vista/7] Adminrechte zur Laufzeit benötigt
 
Ist ja wieder seh hilfsbereit das Forum.

Also muss der Adminteil ne extra Anwendung sein, die dann aufgerufen wird?

rollstuhlfahrer 10. Jan 2010 17:11

Re: [Win Vista/7] Adminrechte zur Laufzeit benötigt
 
Nein muss es nicht. Dazu gibt es in den DP-Delphi-Videos hier im Forum extra ein Video für Delphi und die UAC. Du brauchst halt noch nen COM-Server in deinem Programm, den du dann mit Adminrechten startest und dem dann sagst, was er zu tun hat. Das ist auch hier irgendwo im Forum zu finden.

Bernhard

MuTzE.Y85 10. Jan 2010 18:16

Re: [Win Vista/7] Adminrechte zur Laufzeit benötigt
 
Gut ich hab was über Google gefunden, weil bei dem Beitrag, den ich hier im Forum gefunden hab, die Links nicht mehr gingen.

Danke erstmal!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz