-
c#保护注册表
注册表在操作系统中起着非常重要的地位,如果注册表被非法用户修改,很有可能使系统中的某些程序无法运行,甚至会造成整个系统的崩溃。为了防止由于非法用户擅自使用计算机给用户带来的损害,用户必须使用相关技术来保护注册表。为了防止由于注册表的改动而对计算机产生影响,用户可以通过禁止使用注册表编辑器的方法来禁止用户使用注册表。过通Microsoft.Win32命名空间下的Registry类与RegistryKey类,实现在注册表中的“HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem”子项中新建一个名为DisableRegistryTools的双字节值项,并将该值项的数值数据设置为1。如果要恢复注册表为允许使用的状态,可以使用RegDeleteKey类删除System子项。
注意:在进行此项操作之前,笔者建议用户应从安全角度出发,首先对注册表文件进行备份或准备另外一个注册表修改工具,因为在进行此项操作之后,用户就无法使用注册表编辑器来打开注册表了。另外,如果用户需要使用注册表编辑器,可以在“安全模式”下对注册表进行修改等操作。
通过操作注册表控制“注册表编辑器”,单击“禁用Regedit”按钮,这时在“运行”窗口中输入“regedit”命令,将弹出不可用提示信息。这样便可以防止非法用户修改注册表。为了方便使用,这里提供了启用注册表的功能。单击“启用Regedit”按钮后,这时用户便可以正常操作注册表。
禁用注册表编辑器,通过Registry类的CreateSubKey方法在"HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem"键下创建一个“DisableRegistryTools”子键并且另其键值为“1”,程序代码如下: privatevoidbutton2_Click(objectsender,EventArgse)
{
try
{
RegistryKeyrgK=Registry.CurrentUser.CreateSubKey(@"SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem");
rgK.SetValue("DisableRegistryTools",1,RegistryValueKind.DWord);
MessageBox.Show("禁用成功!!!");
}
catch{}
}
启用注册表编辑器,通过RegistryKey类的DeleteSubKey方法删除"HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem"键,便可以正常使用注册表编辑器,程序代码如下:privatevoidbutton1_Click(objectsender,EventArgse)
{
try
{
RegistryKeyrgK=Registry.CurrentUser;
rgK.DeleteSubKey(@"SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem");
MessageBox.Show("启用成功!!!");
}
catch{}
}