本帖最后由 雨淋心空 于 2023-12-26 21:48 编辑
此贴旨在解决32位易语言程序写入注册表自启项后,判断注册项是否存在为假的问题。
正常情况下我们写自启注册项的代码如下:
判断注册表自启项是否存在的代码如下:
以上判断自启注册项是否存在的代码,在32位系统中返回为“真”,但在64位系统中返回为“假”。
原因在于易语言程序为32位程序,在32位系统中写本地机器自启项路径为:[HKEY_LOCAL_MACHINE\software\microsoft\windows\CurrentVersion\Run\],
而在64位系统中,32位程序写的自启项会被调整到:[HKEY_LOCAL_MACHINE\software\WOW6432Node\microsoft\windows\CurrentVersion\Run\]。
因此,在写自启项的时候,可以闭着眼睛写到:[HKEY_LOCAL_MACHINE\software\microsoft\windows\CurrentVersion\Run\],因为64位系统自动调整后也能正常自启。
但是在判断自启项是否存在或者删自启项时,因为[HKEY_LOCAL_MACHINE\software\WOW6432Node\]这个表项无论32位还是64位都存在,
所以建议根据系统位数来选择判断及删除路径,或者直接两个路径都判断,都删除。
判断自启项是否存在
如果真 (注册项是否存在 ( #本地机器, “software\microsoft\windows\CurrentVersion\Run\” + 取执行文件名 ()) = 假)如果真 (注册项是否存在 ( #本地机器, “software\WOW6432Node\microsoft\windows\CurrentVersion\Run\” + 取执行文件名 ()) = 假)
删除自启项
|