Я разработал обходной путь для устаревшего программного обеспечения WinXP (код / проект недоступен, он очень старый!), Который позволяет ему работать в Windows 10. Обходной путь по существу состоит из установки сценария Inno, который: 1) Запускает установщик XP программного обеспечения (запрашивает admin), и 2) Запускает пакетный файл для копирования файлов "comctl32.dll / .ocx" в Windows / SysWOW64.
Намерение состоит в том, чтобы запустить этот установщик на клиентских компьютерах в автоматическом режиме, и установка / копирование файлов в порядке, но моя основная проблема заключается в том, что установленные программы должны быть запущены от имени администратора хотя бы один раз, чтобы впоследствии работать локальный администратор и обычные пользователи.
Итак, в настоящее время мой тихий установщик / пакет делает все нормально, но мне все равно нужно щелкнуть правой кнопкой мыши все эти программы и один раз выполнить Запуск от имени администратора (что противоречит цели создания этого установщика / сценария, если мне придется делать это со всеми моими машинами! ). Итак, я думаю, что мне нужно добавить в свой пакетный файл для запуска программы (от имени администратора), а затем принудительно закрыть.
Есть предложения о том, как я могу написать это? К вашему сведению, я подумал о "nircmd", но думаю, что наши сканеры отметили его, и он исчез с моего ПК, прежде чем я смог попробовать что-нибудь с ним. ^ _ ^
Учетные записи пользователей этих компьютеров всегда имеют значение «локальный администратор», но не более высокий уровень администратора. Я действительно не знаю, что происходит в фоновом режиме, когда программы запускаются с запуском от имени администратора (я упоминал об отсутствии доступа к коду / проекту? ^ _ ^)
Вот пакетный файл, который я написал, который запускается после этого установщика XP. По сути, это копирует часть этого дополнительного файла обходного пути и пытается запустить программу, а затем - taskkill ... Как вы думаете, это движется в правильном направлении?
ECHO
TITLE "C Win10 Installer"
COPY "c:\temp\Cwin10\Cicon.ico" "C:\Program Files (x86)\ABC\Cfolder\C.ico"
COPY "c:\temp\Cwin10\comctl32.dll" "C:\Program Files (x86)\ABC\Cfolder\comctl32.dll"
COPY "c:\temp\Cwin10\comctl32.ocx" "C:\Program Files (x86)\ABC\Cfolder\\comctl32.ocx"
COPY "c:\temp\Cwin10\CDM20830_Setup.exe" "C:\Program Files (x86)\ABC\Cfolder"
XCOPY "c:\temp\Cwin10\ref" "C:\Program Files (x86)\ABC\Cfolder\ref" /i /s
COPY "C:\Program Files (x86)\ABC\Cfolder\Strip.ocx" "C:\Program Files (x86)\ABC\Cfolder\app\Strip.ocx"
RUNAS /env /user:Administrator "C:\Program Files (x86)\ABC\Cfolder\app\App.exe"
TASKKILL /F /im App.exe
DEL "C:\temp\Cwin10\Cicon.ico"
set folder="C:\temp\Cwin10"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
Также к вашему сведению, я добавил это в начало моей партии Как я могу автоматически повысить уровень своего командного файла, чтобы он запрашивал права администратора UAC, если это необходимо?
ОБНОВЛЕНИЕ: изменено, чтобы вместо этого регистрировать библиотеки DLL в INNO, вот где я сейчас нахожусь. Я использую обходной путь ярлыка, чтобы запустить приложение от имени администратора один раз, поэтому последующие запуски будут работать ... однако я хочу TASKKILL, чтобы он запускался в течение короткой секунды и немедленно закрывался, а затем запускал следующие два приложения.
Однако на самом деле он запускает приложение и ничего не делает. Когда закрываю, то приходит TASKKILL и не может найти запущенный процесс. Есть предложения, как ЗАПУСТИТЬ, а затем TASKKILL за одну секунду?
ECHO
TITLE "C Win10 Installer"
"C:\temp\Cwin10\BexeShortcut.lnk"
TASKKILL /F /im B.exe
"C:\temp\Cwin10\EexeShortcut.lnk"
TASKKILL /F /im E.exe
"C:\temp\Cwin10\Cexe.lnk"
TASKKILL /F /im Cexe.exe
set folder="C:\temp\Cwin10"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)