HKEY_CURRENT_USER
Windows 服务在每个登录用户的注册表项下创建一个注册表值(用于 Excel 加载项) (通过调用ImpersonateLoggedOnUser()
and RegSetValueEx()
)。我需要在用户注销时删除此注册表值,包括系统关闭。如果在注销时未将其删除,并且该软件由一个用户卸载,则注册表中的条目将保留给在服务生命周期内登录的任何其他用户,这会导致每次 Excel 启动时都会显示一个消息框错误因为它正在尝试加载不再存在的加载项。
考虑但拒绝了以下内容:
SetConsoleCtrlHandler()
因为没有迹象表明哪个用户正在注销。REG_OPTION_VOLATILE
因为它仅在创建密钥时有效并且我只是在创建一个值(没有彻底调查,因此即使我正在创建密钥也可能不是解决方案)。
有没有其他机制可以解决这个问题?Windows 版本为 XP、Vista 和 7。