Подтвердить что ты не робот

Как установить программную программу "Запуск этой программы как администратора"

У меня проблема с хорошим ol 'bdeadmin.exe в Vista. Во-первых, позвольте получить предсказуемые ответы:

"Вы не должны требовать, чтобы ваше приложение было повышено".
Это делает. C'est la vie.

"Вам нужно встроить файл манифеста".
Он уже составлен, ему уже много лет, компания, которая его создала, не намерена делать это снова, и она устанавливается из модуля слияния (файл MSM).

"BDE устарел, вы должны использовать dbExpress"
Полтора миллиона строк кода. - сказал Нафф.

"Отбросьте файл манифеста рядом с EXE".
Пробовал это, ничего не сделал. В качестве теста тот же файл манифеста смог сделать несколько других EXE файлов, требующих повышения, а не того, что я хотел. Что-то там препятствует чтению внешнего манифеста.

"Создайте ярлык и установите SLDF_RUNAS_USER."
Невозможно сделать это, это апплет панели управления.

Единственное, что работало, это установка "Запустить эту программу в качестве администратора" на вкладке "Совместимость" в окне "Свойства". Мне не нужно было говорить пользователям об этом. Плохо для бизнеса. Мне нужно, чтобы установщик сделал это. Файл MSM использует статический путь.

4b9b3361

Ответ 1

Вы можете программно установить флаг "Запустить эту программу как администратор" (параметр, который вы найдете на вкладке "Совместимость" свойств EXE), установив простой раздел реестра. Вам нужно создать строковое значение (REG_SZ) под одним из этих ключей (если вы хотите, чтобы настройка была на пользователя или на машину соответственно):

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

или

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

Имя значения должно быть полным путем к исполняемому файлу (если путь содержит пробелы, не окружает путь кавычками), а данные значения должны содержать строку RUNASADMIN.

Для образца:

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

Режимы совместимости

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

Уровень привилегий

RUNASADMIN Запуск программы как администратора

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

Литература: http://www.verboon.info/2011/03/running-an-application-as-administrator-or-in-compatibility-mode/

Ответ 2

Это длинный снимок, но если у вас есть слово "setup" или "install" в имени EXE, Windows будет запрашивать повышение при запуске. Я не знаю, будет ли это работать с апплетом панели управления.

Ответ 4

Используйте программу переноса, которая использует ShellExcute, которая использует "runas" в качестве своего "глагола" для запуска нужной вам программы.

Ответ 5

Я обнаружил, что метод файла .manifest не работает, если .exe находится под C:\Program files\..., а .exe ранее был запущен без файла .manifest. Windows запоминает .manifest с момента запуска .exe. Это означает, что вы не можете просто отправить манифест, когда пользователи жалуются, что их установки не запущены. Файл манифеста должен быть помещен до или во время одной и той же установки, где размещается .exe.

Windows перепроверяет .manifest, если изменения .exe (например, новая версия или другое количество байтов)

Ответ 6

Упакуйте приложение в WinRar SFX с тихим режимом + режим запроса администратора.

Гораздо проще, чем возиться с переменными .MSI.

Ответ 7

Я был бы удивлен, если бы это было возможно. Это было бы идеальным способом для вредоносного кода злоупотреблять системой. Вероятно, вы скажете пользователю, который должен установить администратор, или должны иметь права администратора (как и все другие программы в окнах).