Skocz do zawartości

Uruchomienie aplikacji jako Administrator


Tosiek

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.

Link do komentarza
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.

Pozdrawiam: olesio

Link do komentarza
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>

Link do komentarza
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.

Pozdrawiam: olesio

Link do komentarza
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.

Pozdrawiam: olesio

Link do komentarza
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.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...