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 Vista -> UAC -> Funktion in DLL (https://www.delphipraxis.net/88472-vista-uac-funktion-dll.html)

Gruber_Hans_12345 15. Mär 2007 22:30


Vista -> UAC -> Funktion in DLL
 
Hi,

da ich in meinem Programm selten aber doch einen zugriff auf die registry brauche, möchte ich das gleich richtig machen.

Habe bis jetzt was gefunden, wie man die Registry zugriffe in einen COM Server auslagern kann, und diesen dann aufruft.
Da mir COM aber etwas unsymphatisch ist, wäre es mir lieber, wenn ich ne DLL habe, wo einfach ne funktion ausgelagert, und ich diese aufrufe, dann sollte das UAC kommen nach dem admin schreien, und dann die funktion aufrufen ...

ist das so möglich?
hat wer nen codeschnipsel?

oder kann ich das nur mit exe files und COM Server machen?

Bernhard Geyer 16. Mär 2007 07:55

Re: Vista -> UAC -> Funktion in DLL
 
Nein. Eine normale DLL wird in den Anwendungsprozess geladen und läuft damit mit gleichen Rechten wie die Exe.
Du brauchst schon eine eigene Exe mit entsprechend angepaßten Manifest welches beinhaltet das Admin-Rechte nötig sind weche du dann mit ShellExecute startest.

Gruber_Hans_12345 16. Mär 2007 08:42

Re: Vista -> UAC -> Funktion in DLL
 
hmmm schade, dachte mir, das es vielleicht ne möglichkeit gibt eine dll speziell dynamisch zu laden, dass diese ein neues security token bekommen kann oder so ....(bei COM Servern, die in DLL ausgelagert sind sollte es ja funktionieren)

... nda dann muß ich es doch per COM Server machen

Bernhard Geyer 16. Mär 2007 08:57

Re: Vista -> UAC -> Funktion in DLL
 
Bei COM-Server spielt ja auch noch wieder andere Möglichkeiten der Rechtevergabe hinzu.
Hast du da was spezielles eingestellt?

Gruber_Hans_12345 16. Mär 2007 09:13

Re: Vista -> UAC -> Funktion in DLL
 
nein, ich bin gerade erst am rumtesten von den diversen sachen ...

zuerst wollte ich mal probieren mit einem manifest mal fix sagen, das das ding als admin laufen soll (aber das will nicht so wie ich ;) )
http://developersoven.blogspot.com/2...i-part_27.html

und dann das mit dem COM Server testen
http://developersoven.blogspot.com/2...part_3659.html


muß ich bei dem manifest sonst noch was beachten?

habe das manifest
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="*"
    name="Project1"
    type="win32"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
das ist die rc
Code:
7 24 "Project1.manifest"
mache mit brcc32 dann ne res und binde diese dann mit {$R manifest.res} ins project ein

allerdings startet er ohne die frage ob er als admin starten darf ... (mit dem hackerle beim exe, immer als admin starten funkt es)

[edit]Kommando zurück, sieht aus, als ob ich da noch ne standard winxp.res eingebunden habe, und der linker (oder wer auch immer) nimmt immer automatisch die ....


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