Skocz do zawartości
Zaloguj się, aby obserwować  
Tosiek

Uruchomienie aplikacji jako Administrator

Polecane posty

Witam, od razu mówię że nie znam się nic na języku delphi, nakreślę z grubsza o co mi chodzi i może ktoś mi pomoże...

Jakiś czas temu kolega napisał dla mnie program w Delphi [ Uruchamiamy go on pobiera pliki i uruchamia inny program ] wszystko super działa pokazał mi jak go Kompilować kiedy dodaje jakieś zmiany w text. Niestety znajomy wyjechał a mi doszedł nowy problem

Od niedawna ten program napisany w Delphi musi uruchamiać aplikację która wymaga Uprawnień Administratora i jeżeli nie dam prawym na Aplikację Uruchom Jako Administrator to zwraca mi błąd 740: include.exe

 

Szukałem po Internecie ale znajdowałem tylko jakieś modyfikacje do pliku itp nic z tego nie zrozumiałem. Gdzieś widziałem że w programie do kompilowania można ustawić taki parametr, i tutaj moje pytanie czy ktoś podpowie mi gdzie w programie Lazarus znajdę ów parametr? Z góry dziękuje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To jak Ty żeś to szukał? Chyba w papierowej książce telefonicznej. :/ Wprawdzie jest to dalszy wynik z Google po wyszukaniu ShellExecute runas, ale zawsze w pierwszej dziesiątce. Dodajesz ShellApi do sekcji uses i powinno działać: http://zewaren.net/site/?q=node/10 ewentualnie Twoja aplikacja powinna posiadać taki plik manifestu w zasobach. Jeżeli używasz starszego Delphi, jak na przykład siódemka to zasób z manifestem w pliku *.rc powinien mieć koniecznie rodzaj opisany liczbą 24. Nie coś innego, bo nie dołaczy Tobie prawidłowo zasobów do exeka. Czyli na przykład ma być tak. w kodzie programu:

{$R use_tbrain_dude .res}

 

W pliku use_tbrain_dude .rc ma być:

1 24 "use_tbrain_dude.manifest"

 

A plik use_tbrain_dude.manifest powinien wyglądać tak:

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

Wtedy pokaże się monit od mechanizmu UAC. Jeśłi potwierdzisz to uruchomiony program uzyska prawa Administratora. Jak również inne przez niego uruchamiane. A i za pewne parser tego forum rozwalił mi formatowanie. Ale na to nic nie poradze.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zrobiłem jak powiedziałeś, jednak program dalej nie uruchamia się jako administrator, i po każdej Kompilacji zawartość pliku zmienia się na :

 

<?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="CompanyName.ProductName.YourApp" type="win32"/>
<description>Your application description here.</description>
<dependency>
 <dependentAssembly>
  <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
 </dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 <security>
  <requestedPrivileges>
   <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
  </requestedPrivileges>
 </security>
</trustInfo>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
  <dpiAware>true</dpiAware>
 </asmv3:windowsSettings>
</asmv3:application>
</assembly>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To nie wiem. Nie doprecyzowałeś jakiego IDE używasz. Ja pod Delphi 7 robię tak jak opisałem i jest ok. Nowsza środowiska posiadają o ile się nie mylę ustawienia projeklu ogarniające manifesty. Może ktoś inny jeszcze coś doradzi. Dla mnie poza programistyczne rozwiążanie dla osób, które myślą co robią przy komputerze, to wyłączyć UAC.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
i tutaj moje pytanie czy ktoś podpowie mi gdzie w programie Lazarus znajdę ów parametr?

 

Doprecyzował tylko nie doczytałeś :P. Komentarze na p4 fajna rzeczy :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A faktycznie w ostatnim zdaniu. No to Lazarus powinienen obsługiwać sam odpowiednie manifesty. Byc może kwestia tego typu czy pod brcc32.exe lub gorc.exe dla FPC czy tam Lazarusa, pytający przebudował zasoby, aby manifest fizycznie znalazł się w exeku.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A faktycznie w ostatnim zdaniu. No to Lazarus powinienen obsługiwać sam odpowiednie manifesty. Byc może kwestia tego typu czy pod brcc32.exe lub gorc.exe dla FPC czy tam Lazarusa, pytający przebudował zasoby, aby manifest fizycznie znalazł się w exeku.

 

Tak modyfikowałem te pliki w katalogu Lazarusa jednak to nic nie dało. po mimo iż wyjściowy plik wygląda jak ten podesłany przez ciebie [ podmieniłem go ] to program dalej nie prosi o uprawnienia administratora.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
Zaloguj się, aby obserwować  

×