一般应用程序可以操作注册表,不会出现上面问题。但是做成Windows服务的形式就会存在很多问题。
问题一:服务无法访问到HKEY_CURRENT_USER中的值。
解决:服务一般做成LocalSystem,本地服务,本地服务权限比较高,但本地服务无法访问HKEY_CURRENT_USER中的值,因为它是保存当前用户的信息内容(需要用户登录),本地服务无法访问到需要用户登录的注册表信息。HKEY_CURRENT_USER中的值是一直在变的,登录用户不同,值不同,HKEY_USERS下保存了很多sid,包含用户的sid,这个sid是唯一的,由很多因素决定,HKEY_CURRENT_USER就是HKEY_USERS下当前登录sid的映射。
应用程序可以通过代码方式访问到当前用户的sid,如某个sid:S-1-5-21-1993962763-1677128483-682003330-1021,用本地服务访问用户sid不可行,访问到的会是S-1-5-18,获取到的是当前用户服务的sid