1. 程式人生 > >WIN10應用程式自啟動功能及InstallShield讀寫64位系統登錄檔相關問題的解決

WIN10應用程式自啟動功能及InstallShield讀寫64位系統登錄檔相關問題的解決

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;