Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   BDS.exe mit und ohne Admin-Rechten ausführen (https://www.delphipraxis.net/183986-bds-exe-mit-und-ohne-admin-rechten-ausfuehren.html)

mm1256 18. Feb 2015 09:40

BDS.exe mit und ohne Admin-Rechten ausführen
 
Hallo,

ich dreh' gerade am Rad. Eigentlich sollte es doch ganz einfach sein. Windows 8.1 64 Bit. Zwei Verknüpfungen für die "bds.exe" auf dem Desktop, einmal [x] Programm als Administrator ausführen und ein zweites mal ohne. Pustekuchen. Sobald ich bei einer Verknüpfung die Einstellung ändere, ändert sich die andere automatisch mit.

Wer verar... mich jetzt? Bill Gates, oder ich mich selber?

jaenicke 18. Feb 2015 09:44

AW: BDS.exe mit und ohne Admin-Rechten ausführen
 
Die Einstellung wird bei der Exe gesetzt, nicht bei der Verknüpfung. ;-)
Was auch logisch ist, denn es ist ja eine Kompatibilitätseinstellung. Für deine Zwecke war das nie gedacht.

Du wirst also eine Batchdatei oder kleine Exe vorschalten müssen. Dort kannst du das dann setzen.

himitsu 18. Feb 2015 10:10

AW: BDS.exe mit und ohne Admin-Rechten ausführen
 
Du kannst in einer Verknüpfung RunAs aufrufen und dem die bds.exe übergeben.

Also praktisch die Lösung mit der EXE, bzw. das Selbe was man in der Batch machen würde ... nur ohne die Batch. :stupid:

Faxe 18. Feb 2015 10:50

AW: BDS.exe mit und ohne Admin-Rechten ausführen
 
Man könnte eine "geplante Aufgabe" mit erhöhten Rechten erstellen und diese nur per Verknüpfung starten, z.B.:

C:\Windows\System32\schtasks.exe /run /TN "Aufgabentitel"

Das spart auch die blöde UAC-Abfrage.

mm1256 18. Feb 2015 13:25

AW: BDS.exe mit und ohne Admin-Rechten ausführen
 
Hallo,

vielen Dank für die Anregungen! Im Nachhinein betrachtet...logisch, ist eine Anwendungseinstellung. Ich hab's nun wie von Faxe vorgeschlagen mit dem Scheduler gemacht. Das hat den meisten Charme, weil die UAC wegfällt.

Einziger Nachteil: Der nächste geplante Programmstart ist erst am 01.01.2016 um 00:00 Uhr. Mann oh mann, hat man's nicht als Programmierer so was von gut :thumb:

hathor 18. Feb 2015 17:05

AW: BDS.exe mit und ohne Admin-Rechten ausführen
 
Liste der Anhänge anzeigen (Anzahl: 2)
StarteBDS.exe im Anhang.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, WinApi.ShellAPI;

type
  TForm1 = class(TForm)
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure RunAsAdmin(hWnd: HWND; aFile: string; aParameters: string);
var sei: TShellExecuteInfo;
begin
     FillChar(sei, SizeOf(sei), 0);
     sei.cbSize := sizeof(sei);
     sei.Wnd := hWnd;
     sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
     sei.lpVerb := 'runas';
     sei.lpFile := PChar(aFile);
     sei.lpParameters := PChar(aParameters);
     sei.nShow := SW_HIDE; // SW_SHOWNORMAL; SW_HIDE; SW_MAXIMIZE;
     if not ShellExecuteEx(@sei) then RaiseLastOSError;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked then
   RunAsAdmin(Application.Handle,'BDS.exe', '') else
   ShellExecute(Application.Handle,NIL,'BDS.exe','',NIL, SW_SHOW);;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 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