在XP中从系统服务中调用INSTALLSHIELD制作的SETUP.EXE,缺省情况下,InstallShield的安装引擎IDRIVER.EXE会以当前交互的用户来运行,这样就可能会发生一些某些操作时权限不够的情况,特别是会在安装结束时出现1628: failed to complete installation。log文件会记录为failed to create unistallation information。
解决方法是在调用setup.exe时,加-runas参数,即以setup.exe -runas -...来运行setup,那么idriver.exe会以当前进程的用户SID运行。
另在注册表中idriver.exe也有相应的表项修改idriver.exe的运行方式,效果与加-runas相同。