AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Bei Programstart Adminrechte einholen?
Thema durchsuchen
Ansicht
Themen-Optionen

Bei Programstart Adminrechte einholen?

Ein Thema von Memnarch · begonnen am 26. Jul 2011 · letzter Beitrag vom 26. Jul 2011
Antwort Antwort
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

Bei Programstart Adminrechte einholen?

  Alt 26. Jul 2011, 09:27
Tag allerseits.
Was mich mal interressieren würde:

Wenn eine Setup gestartet wird, popt oft das UAC fenster auf mit der Frage ob ich es dem programm gestatten soll änderungen durchzuführen. Wenn ich mich recht erinnere gab es auch mal einen Dialog vonwegen "Dieses Programm benötigt Adminrechte" (Glaube das war JavaUpdaten)

Wie kann ich so einen Dialog aufrufen, über den der User dem Programm solche rechte geben kann? Es ist nunmal etwas "umständlich" immer zu sagen "muss mit adminrechten gestartet werden", was der User manuel durchführen muss. Schöner wäre es halt wen der User beim start ne Meldung bekommen würde, über die er die rechte zulassen kann.

Gibts da ne möglichkeit?

MFG
Memnarch
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von nh.
nh.

Registriert seit: 13. Mai 2011
11 Beiträge
 
#2

AW: Bei Programstart Adminrechte einholen?

  Alt 26. Jul 2011, 10:01
Du darfst jetzt netterweise noch eine Exe mitliefern:
Delphi-Quellcode:
program GanzTollesStartProgramm;

uses
  Windows,
  sysutils,
  ShellAPI;
     
const
  EchseName = 'DirSync.exe';

  SEE_MASK_NOCLOSEPROCESS = $00000040;

  function Run(aFile, Params: string; const ShowCmd: DWORD; const AsAdmin: Boolean): Boolean;
  var
    ShExecInfoA: SHELLEXECUTEINFOA;
  begin
    Result := false;
    if (aFile = '') or not FileExists(aFile) then
      Exit;

    ShExecInfoA.Wnd := GetForegroundWindow;
    ShExecInfoA.cbSize := SizeOf(SHELLEXECUTEINFOA);
    ShExecInfoA.fMask := SEE_MASK_NOCLOSEPROCESS;
    if AsAdmin then
      ShExecInfoA.lpVerb := 'runas'
    else
      ShExecInfoA.lpVerb := 'open';
    ShExecInfoA.lpFile := PAnsiChar(AnsiString(aFile));
    ShExecInfoA.lpParameters := PAnsiChar(AnsiString(Params));
    ShExecInfoA.lpDirectory := PAnsiChar(AnsiString(ExtractFileDir(aFile)));
    ShExecInfoA.nShow := ShowCmd;
    Result := ShellExecuteExA(@ShExecInfoA);

    CloseHandle(ShExecInfoA.hProcess);
  end;

var
  Params, OrigEchse: string;
  i: Integer;
begin
  OrigEchse := IncludeTrailingPathDelimiter(ExtractFileDir(ParamStr(0)))+EchseName;
  Params := '';
  for i := 1 to ParamCount do
    Params := Params + ' ' + ParamStr(i);
  Delete(Params, 1, 1);
  case MessageBox(0, 'Soll '+EchseName+' mit Adminrechten gestartet werden?', 'Adminrechte?', MB_ICONQUESTION or MB_YESNOCANCEL or MB_DEFBUTTON1) of
    idYes: Run(OrigEchse, Params, SW_SHOWNORMAL, true);
    idNo: Run(OrigEchse, Params, SW_SHOWNORMAL, false);
    idCancel: MessageBox(0, 'Keine Sorge, bei dem ganzen Rechtekauderwelsch weiß keiner mehr was er will, geschweige denn was Richtig wäre. -,,,-', '', MB_ICONERROR or MB_OK or MB_DEFBUTTON1);
  end;
end.
Oder tricksen und sich selbst neustarten.
Nur Vorsicht, vieles funzt immernoch nicht, zB mit einem Adminprozess einen 'normalen' Prozess starten....
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#3

AW: Bei Programstart Adminrechte einholen?

  Alt 26. Jul 2011, 10:07
Moment... du startest ein normales programm, dass dan ein anderes als admin startet?
Bin mir nicht sicher ob das funktioniert. Hab irgendwo was vonnem app.manifest gelesen. Aber diesbezüglich noch nicht schlauer geworden.


MFG
Memnarch
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von nh.
nh.

Registriert seit: 13. Mai 2011
11 Beiträge
 
#4

AW: Bei Programstart Adminrechte einholen?

  Alt 26. Jul 2011, 10:09
Jo, genau so.
Lass das undynamische Manifestinterpretationsgedöns weg, will eh keiner.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Bei Programstart Adminrechte einholen?

  Alt 26. Jul 2011, 10:39
Irgendwie vermisse ich gerade den "Daumen runter" Button...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz