65.9K
CodeProject 正在变化。 阅读更多。
Home

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

2007年4月2日

1分钟阅读

viewsIcon

27616

downloadIcon

920

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

Screenshot - ServiceRegistryClean1.jpg

引言

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

Screenshot - ServiceRegistryClean2.jpg

图 3

Screenshot - ServiceRegistryClean3.jpg

最后说明

我希望这篇文章对您有所帮助。如果您觉得这篇文章很愚蠢、烦人、不正确等,请根据您的判断对文章进行评分。但是,如果您能留下评论解释您的理由,以便我(希望)从我的错误中学习,我将不胜感激。

© . All rights reserved.