Windows 服务的注册表清理自动化






1.73/5 (6投票s)
2007年4月2日
1分钟阅读

27616

920
此应用程序演示了在安装/卸载 Windows 服务时创建注册表中自定义子项的方法。

引言
Microsoft.Win32.Registry.LocalMachine
此类提供了在运行 Windows 的机器的注册表中找到的标准根密钥集。注册表是关于应用程序、用户和默认系统设置的信息存储库。例如,应用程序可以使用注册表来存储应用程序关闭后需要保留的信息,并在重新加载应用程序时访问相同的信息。例如,您可以存储颜色偏好设置、屏幕位置或窗口大小。您可以为每个用户控制此数据,方法是将信息存储在注册表中的不同位置。
由 Registry 类公开的基本或根 RegistryKey 实例,定义了注册表中子项和值的基本存储机制。所有密钥都是只读的,因为注册表依赖于它们的存在。请按照以下步骤操作。
步骤 1
在 ProjectInstaller.vb 中,添加以下方法并进行重写。
对于安装
Public Overrides Sub Install(ByVal stateServer As IDictionary) MyBase.Install(stateServer) Dim rkSystem, rkCurrentControlSet, rkServices, rkService, rkSubKey As RegistryKey rkSystem = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System") rkCurrentControlSet= rkSystem.OpenSubKey("CurrentControlSet") rkServices = rkCurrentControlSet.OpenSubKey("Services") rkService = rkServices.OpenSubKey(Me.ServiceInstaller1.ServiceName, True) rkService.SetValue("Description","Test Service") rkSubKey = rkService.CreateSubKey("CHILD") End Sub
对于卸载
Public Overrides Sub Uninstall(ByVal stateServer As IDictionary) Dim rkSystem,rkCurrentControlSet, rkServices, rkService As RegistryKey rkSystem = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System") rkCurrentControlSet = rkSystem.OpenSubKey("CurrentControlSet") rkServices = rkCurrentControlSet.OpenSubKey("Services") rkService = rkServices.OpenSubKey(Me.ServiceInstaller1.ServiceName, True) rkService.DeleteSubKeyTree("CHILD") MyBase.Uninstall(stateServer) End Sub
第二步
构建 Windows 服务项目并部署项目。在部署项目中,将主输出添加到安装和卸载自定义操作中。参考:图 2 和图 3
图 2
图 3
最后说明
我希望这篇文章对您有所帮助。如果您觉得这篇文章很愚蠢、烦人、不正确等,请根据您的判断对文章进行评分。但是,如果您能留下评论解释您的理由,以便我(希望)从我的错误中学习,我将不胜感激。