批处理 运行 一个程序 "Run As Admin" 一次,然后立即关闭

Batch Script to run a program with "Run As Admin" once, and then immediately close

我为 WinXP 遗留软件开发了一个解决方法(code/project 不可用,它太旧了!)允许它在 Windows 10 中 运行。解决方法主要包括Inno 脚本设置:1) 运行s 软件的 XP 安装程序(管理员提示),以及 2) 运行s BATCH 文件将文件 "comctl32.dll/.ocx" 复制到 Windows/SysWOW64

目的是 运行 此安装程序在客户端 PC 上静默安装,installation/copy 个文件都很好,但我的主要问题是 安装的程序必须 "Run As Admin" 至少一次,以便随后为本地管理员和标准用户工作

所以目前我的静默安装程序/批处理一切正常,但我仍然必须右键单击所有这些程序并以管理员身份执行 运行 一次(这违背了创建 installer/script 的目的如果我必须对我的所有机器执行此操作!)。所以我想我应该将我的批处理文件添加到 运行 程序(作为管理员),然后强制关闭。

关于我如何编写脚本的任何建议? 仅供参考,我考虑过 "nircmd" 但我认为我们的扫描仪标记了它并且它在我可以之前从我的电脑上消失了尝试任何事情。 ^_^

这些 PC 的用户帐户始终设置为 "local admin",但没有高于此级别的管理员级别。当程序以 运行 作为管理员启动时,我真的不知道后台发生了什么(我有没有提到无法访问 code/project?^_^)

这是我在 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)

另外,仅供参考,我确实已将此添加到我的批次的顶部 How can I auto-elevate my batch file, so that it requests from UAC administrator rights if required?


更新:修改为在 INNO 中注册 DLL,这是我目前所在的位置。我正在使用快捷方式解决方法 运行 应用程序作为管理员一次,因此后续 运行s 将工作......但是我想 TASKKILL 所以它 运行s 快速秒然后关闭立即,然后 运行s 接下来的两个应用程序。

然而,它真正做的是 运行 应用程序,什么都不做。当我关闭时,TASKKILL 来了,找不到 运行ning 进程。 有什么建议 运行 然后在一秒钟内完成 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)

在批处理文件中:

START "" /B App.exe
TIMEOUT /t 1
TASKKILL /F /IM App.exe

谢谢。