我为WinXP遗留软件(代码/项目不可用,它非常老!)开发了一种解决方法,允许它在Windows 10中运行。解决方法主要包括Inno脚本设置:1)运行软件&#39 ; s XP安装程序(提示输入管理员),以及2)运行BATCH文件以复制文件" comctl32.dll / .ocx"到Windows / SysWOW64
目的是在客户端PC上静默运行此安装程序,并且文件的安装/复制很好,但我的主要问题是安装的程序必须是"运行作为管理员"至少一次,以便随后为本地管理员工作标准用户。
所以目前我的无声安装程序/批处理做的一切都很好,但是我仍然需要右键单击所有这些程序并执行一次Run as Admin(如果我必须对所有程序执行此操作,则无法创建该安装程序/脚本)我的机器!)。因此,我认为我应该添加到我的批处理文件中以运行程序(作为管理员),然后强制关闭。
有关如何编写此脚本的任何建议吗?仅供参考,我考虑过" nircmd"但是我认为我们的扫描仪会标记它并且在我可以尝试任何操作之前它已经从我的PC中消失了。 ^ _ ^
这些PC的用户帐户始终设置为"本地管理员",但不是任何高于此的管理员级别。当程序以Run as Admin开头时,我真的不知道后台会发生什么事情(我是否提到无法访问代码/项目?^ _ ^)
这是我编写的批处理文件,在该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,而不是我目前所在的位置。我使用快捷方式解决方法以管理员身份运行应用程序,因此后续运行将起作用...但是我想要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)
答案 0 :(得分:1)
在批处理文件中:
START "" /B App.exe
TIMEOUT /t 1
TASKKILL /F /IM App.exe
感谢。