1. 问题:应用程序需要随系统启动,同时该应用程序也需要获得管理员权限才可以运行,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run位置,设置了相关启动项,发现无法随机启动。发现,若应用程序不获得管理员权限下,即UAC等级一般下,可以正常随操作系统启动。若设置UAC的等级为管理员,则不能随操作系统启动。
解决方法:利用一个UAC一般的程序,设置其随操作系统启动,启动后,将业务用的应用程序启动。
2.问题: InstallShield2015生成的安装包是X32位的,尽管其安装的目标应用程序是X64的。出现的问题是,在InstallShield的脚本文件中,利用了RegDBSetDefaultRoot RegDBDeleteValue两个函数操作注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,发现RegDBDeleteValue执行失败。
发现:其真正操作的是计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run注册表。在此,大家可以搜索WOW6432Node相关资料学习。解决方法也就简单了:
解决方法:
在操作注册表前,增加:REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;
在操作注册表后,增加:REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY;