Jak ustawić programowo "Uruchom ten program jako administrator"

Mam problem z starym dobrym bdeadminem.exe w Vista. Po pierwsze, pozbądźmy się przewidywalnych odpowiedzi:

" nie powinieneś wymagać podwyższania swojej aplikacji."
Ten ma. C ' est la vie.

" musisz osadzić plik manifestu."
Jest już skompilowany, ma wiele lat, firma, która go stworzyła, nie ma zamiaru robić tego ponownie, A jest instalowany z modułu Merge (plik MSM).

" BDE jest przestarzałe, powinieneś używać dbExpress "
Półtora miliona linijek kodu. - Nuff powiedział.

" upuść plik manifestu obok EXE."
Próbowałem, nic nie zrobiłem. Jako test, ten sam plik manifest był w stanie sprawić, że kilka innych plików EXE wymaga elewacji, tylko nie ten, który chciałem. Coś tam uniemożliwia odczytanie zewnętrznego manifestu.

" Utwórz skrót i ustaw SLDF_RUNAS_USER."
Nie mogę tego zrobić, to aplet panelu sterowania.

Jedyne co zadziałało to ustawienie "Uruchom ten program jako administrator" w zakładce kompatybilność okna jego właściwości. Nie powinienem zmuszać użytkowników do tego. Złe dla interesów. Muszę zlecić to instalatorowi. Plik MSM wykorzystuje ścieżkę statyczną.

Author: Cœur, 2010-02-22

7 answers

Możesz programowo ustawić flagę "Uruchom ten program jako administrator" (opcja znajduje się w zakładce kompatybilność właściwości EXE), ustawiając prosty klucz rejestru. Musisz utworzyć wartość łańcuchową (REG_SZ) pod jednym z tych kluczy (jeśli chcesz, aby ustawienie było odpowiednio dla użytkownika lub dla maszyny):

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT\CurrentVersion\AppCompatFlags\Layers

Lub

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

Nazwa wartości musi być pełną ścieżką do pliku wykonywalnego (jeśli ścieżka zawiera spacje, nie otaczaj ścieżki cudzysłowami), A Dane wartości muszą zawierać ciąg znaków RUNASADMIN.

Dla próbki:

reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "PUT__VALUE__HERE"

Tryby Zgodności

WIN95 Windows 95
WIN98 Windows 98
WIN4SP5 Windows NT 4.0 SP5
WIN2000 Windows 2000
WINXPSP2 Windows XP SP2
WINXPSP3 Windows XP SP3
VISTARTM Vista
VISTASP1 Vista SP1
VISTASP2 Vista SP2
WIN7RTM Windows 7
WINSRV03SP1 Windows Server 2003 SP1
WINSRV08SP1 Windows Server 2008 SP1

Poziom Uprawnień

RUNASADMIN uruchom program jako administrator

REG dodaj " HKLM \ SOFTWARE \ Microsoft \ Windows NT\CurrentVersion\AppCompatFlags\Layers " / v "C:\temp\compatmodel\iconsext.exe "/ T REG_SZ / d " WINXPSP3 RUNASADMIN" / f

Bibliografia: http://www.verboon.info/2011/03/running-an-application-as-administrator-or-in-compatibility-mode/

 35
Author: Allon Guralnek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-28 16:41:45

Jest to strzał w ciemno, ale jeśli masz słowo "setup" lub "install" w nazwie EXE, System Windows zapyta o wysokość podczas jego uruchamiania. Nie wiem, czy to zadziała z apletem Panelu sterowania.

 6
Author: Allon Guralnek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-29 14:17:15

Czy wypróbowałeś pakiet narzędzi Microsoft Application Compatibility Toolkit ? Analizuje aplikację i zapewnia podkładki kompatybilności, które mogą pomóc rozwiązać problem.

 1
Author: Aaron Klotz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 19:01:49

Użyj programu zawijania, który używa ShellExcute, który używa " runas "jako" czasownika", aby uruchomić żądany program.

 1
Author: Barrypp.zzx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-03 14:41:11

Odkryłem, że metoda .manifest file nie działa, Jeśli .exe znajduje się pod C:\Program files\..., A .exe zostało wcześniej uruchomione bez Pliku .manifest. Windows zapamiętuje .manifest Od pierwszego uruchomienia .exe. Oznacza to, że nie możesz po prostu wysłać manifestu, gdy użytkownicy skarżą się, że ich instalacje nie działają. Plik manifest musi być umieszczony przed lub podczas tej samej instalacji, która umieszcza .exe.

Windows ponownie sprawdza .manifest Jeśli .exe zmieni się (np. nowe wydanie lub inna liczba bajtów)

 1
Author: Wolf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-10 08:42:44

Spakuj swoją aplikację do WinRar SFX z trybem cichym + tryb żądania administratora.

Znacznie prostsze niż zabawy.Zmienne MSI.

 0
Author: Benji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-06 01:51:13

Zdziwiłbym się, gdyby to było możliwe. Byłby to idealny sposób, aby złośliwy kod nadużywał systemu. Prawdopodobnie będziesz musiał powiedzieć użytkownikowi, że administrator musi zainstalować lub że musi mieć uprawnienia administratora(tak jak wszystkie inne programy w systemie windows).

 -1
Author: Jay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 18:23:05