Skocz do zawartości


Uruchomienie aplikacji jako Administrator


6 odpowiedzi w tym temacie

#1 Tosiek

    Nowy na forum

  • Użytkownicy
  • 8 Postów:

Napisano pią, 26 wrz 2014 - 12:08

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.

#2 olesio

    Ekspert

  • Super użytkownicy
  • 363 Postów:
  • Gadu-Gadu:478088

Napisano pią, 26 wrz 2014 - 13:42

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:
delphi
{$R use_tbrain_dude .res}


W pliku use_tbrain_dude .rc ma być:
delphi
1 24 "use_tbrain_dude.manifest"


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

<?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.

#3 Tosiek

    Nowy na forum

  • Użytkownicy
  • 8 Postów:

Napisano pią, 26 wrz 2014 - 14:07

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>


#4 olesio

    Ekspert

  • Super użytkownicy
  • 363 Postów:
  • Gadu-Gadu:478088

Napisano pią, 26 wrz 2014 - 20:05

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.

#5 babubabu

    Starszy bywalec

  • Użytkownicy
  • 82 Postów:

Napisano sob, 27 wrz 2014 - 08:42

Cytat

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 :)

#6 olesio

    Ekspert

  • Super użytkownicy
  • 363 Postów:
  • Gadu-Gadu:478088

Napisano sob, 27 wrz 2014 - 12:33

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.

#7 Tosiek

    Nowy na forum

  • Użytkownicy
  • 8 Postów:

Napisano sob, 27 wrz 2014 - 14:16

Wyświetl postUżytkownik olesio dnia sob, 27 wrz 2014 - 12:33 napisał

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.