Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm unter Vista als Administrator starten! (https://www.delphipraxis.net/133553-programm-unter-vista-als-administrator-starten.html)

Deltachaos 4. Mai 2009 15:54


Programm unter Vista als Administrator starten!
 
Hi,

ich möchte eine Art Instalations Programm schreiben das auch unter Vista laufen soll.

Nun muss dieses einige Dateien nach "C:\Programme" kopieren. Das funktionirt unter Vista ja nicht einfach so.

Ich selber habe nur XP und habe deswegen einen Freund folgendes Programm testen lassen:

Delphi-Quellcode:
procedure copy;
var
  themp: string;
begin
  themp := IncludeTrailingBackslash(SysUtils.GetEnvironmentVariable('ProgramFiles'));
  showmessage(SysUtils.GetEnvironmentVariable('ProgramFiles'));
  copyfile(PChar(ExtractFilePath(ParamStr(0)) + 'text.txt'), PChar(themp + 'test1.txt'), false);
  copyfile(PChar(ExtractFilePath(ParamStr(0)) + 'text.txt'), PChar(themp + 'test2.txt'), false);
  copyfile(PChar(ExtractFilePath(ParamStr(0)) + 'text.txt'), PChar(themp + 'test3.txt'), false);
  copyfile(PChar(ExtractFilePath(ParamStr(0)) + 'text.txt'), PChar(themp + 'test4.txt'), false);
  copyfile(PChar(ExtractFilePath(ParamStr(0)) + 'text.txt'), PChar(themp + 'test5.txt'), false);
  copyfile(PChar(ExtractFilePath(ParamStr(0)) + 'text.txt'), PChar(themp + 'test6.txt'), false);
end;
Das funktionirt auch aber nur dann wen das Programm als Administrator ausgeführt wird.
Wie kann ich ereichen das beim Normalen ausführen wenigstens ein Bestätigungs Dialog oder so etwas kommt bzw. das Programm mit Administrator rechten gestartet werden muss!

PS: Ich benutze Delphi 7

Frankfurtoder 4. Mai 2009 15:58

Re: Programm unter Vista als Administrator starten!
 
Das Result vom copyfile ist false wenn der Vorgang nicht wie gewünscht ausgeführt wird. Einfach auf das False mit einem Dialog Antworten.

Delphi-Quellcode:
If copyfile(xyz) = false then
  showmessage('Es werden Admin Rechte benötigt!');

mkinzler 4. Mai 2009 16:08

Re: Programm unter Vista als Administrator starten!
 
Besser
Delphi-Quellcode:
If not copyfile(xyz) then

DeddyH 4. Mai 2009 16:09

Re: Programm unter Vista als Administrator starten!
 
Entweder ein entsprechendes Manifest einbinden (dafür gibt es IIRC Beispiele in der DP) oder gleich abfragen, ob der Benutzer Admin ist, z.B. so. Aber wenn Du schon das CopyFile auswertest, dann bitte mit GetLastError die genaue Fehlerursache ermitteln.

shmia 4. Mai 2009 16:32

Re: Programm unter Vista als Administrator starten!
 
Zitat:

Zitat von Deltachaos
Wie kann ich ereichen das beim Normalen ausführen wenigstens ein Bestätigungs Dialog oder so etwas kommt bzw. das Programm mit Administrator rechten gestartet werden muss!

Wenn dein Programm den Text "setup" oder "install" im Namen trägt, dann verlangt Vista automatisch Adminrechte. (hab's selbst nicht getestet; nur aufgeschnappt)

Deltachaos 4. Mai 2009 16:46

Re: Programm unter Vista als Administrator starten!
 
danke für die informationen ich habe das mit dem manifest ausprobiert und es funktionirt

jaenicke 4. Mai 2009 16:52

Re: Programm unter Vista als Administrator starten!
 
Zitat:

Zitat von Deltachaos
Ich selber habe nur XP und habe deswegen einen Freund folgendes Programm testen lassen:

Dort hast du das selbe Problem, wenn du nicht als Administrator arbeitest. Erstelle einfach bei dir ein eingeschränktes Konto und teste es dort auch.

Zum selbst testen unter Vista und einem sauberen XP bietet sich das dafür kostenlos von MS zur Verfügung gestellte Virtual PC Image an:
http://www.microsoft.com/downloads/d...displaylang=en

Andreas L. 5. Mai 2009 03:52

Re: Programm unter Vista als Administrator starten!
 
Weiß jemand warum das folgende Manifest nur unter Vista und nicht unter XP funktioniert? Sowohl als .manifest im Programmverzeichnis abgespeichert als auch eincompiliert.

XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="PROGRAMMNAME.exe" type="*"/>
  <description>elevate execution level</description>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
   <security>
     <requestedPrivileges>
      <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
     </requestedPrivileges>
   </security>
  </trustInfo>
  <dependency>
   <dependentAssembly>
     <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
   </dependentAssembly>
  </dependency>
</assembly>

Fridolin Walther 5. Mai 2009 06:05

Re: Programm unter Vista als Administrator starten!
 
Windows XP kennt den requestedExecutionLevel Parameter nicht. Den gibts erst seit Vista. Entsprechend kannst Du Dich nicht darauf verlassen, daß nur weil Du im Manifest angegeben hast, daß Du gern Admin Rechte hättest, Du diese auch erhälst (zumindest dann wenn Deine Anwendung auch auf Windows Versionen vor Vista ausführbar ist). Eine kleine Abfrage ob Du Admin Rechte hast gekoppelt mit einer Hinweisbox falls nicht, wären der sauberste Weg in dem Fall.

Deltachaos 6. Mai 2009 07:50

Re: Programm unter Vista als Administrator starten!
 
Ok werde mir da was überlegen.

PS: Ich habe die ganze sache auch unter Windows 7 getestet und es funktionirt auch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.
Seite 1 von 2  1 2      

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