问题:
1.点击windows 7控制面板中防火墙的“推荐配置”没有反应
2.打开“服务”,无法启动windows firewall,并报错
3.打开“事件查看器”,选择“Windows 日志”-“系统”,找到最近发生的错误,其事件ID为7024,日志内容为“Windows Firewall 服务因 拒绝访问。 服务特定错误而停止。”
步骤如下:
1.打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess;
2.右键SharedAccess,选择“权限”;
3.单击“添加”.
4.在“输入对象名称来选择”下方的文本框中输入“NT SERVICE\mpssvc”,然后点击右侧的“检查名称”,此时文本框中的内容变为“MpsSvc”;
参考:
1.点击windows 7控制面板中防火墙的“推荐配置”没有反应
2.打开“服务”,无法启动windows firewall,并报错
3.打开“事件查看器”,选择“Windows 日志”-“系统”,找到最近发生的错误,其事件ID为7024,日志内容为“Windows Firewall 服务因 拒绝访问。 服务特定错误而停止。”
步骤如下:
1.打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess;
2.右键SharedAccess,选择“权限”;
3.单击“添加”.
4.在“输入对象名称来选择”下方的文本框中输入“NT SERVICE\mpssvc”,然后点击右侧的“检查名称”,此时文本框中的内容变为“MpsSvc”;
5.单击“确定”;
修改注册表有些烦,下面是控制台程序的代码:
// modifyReg.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <Aclapi.h>
//程序用于修改SAM项的权限,赋于Administrators组成员完全控制权限
int _tmain(int argc, _TCHAR* argv[])
{
LPSTR SamName = "MACHINE\\SYSTEM\\CurrentControlSet\\services\\SharedAccess"; //要修改的SAM项路径
PACL pOldDacl=NULL;
PACL pNewDacl=NULL;
DWORD dRet;
EXPLICIT_ACCESS eia;
PSECURITY_DESCRIPTOR pSID=NULL;
dRet = GetNamedSecurityInfo(SamName,SE_REGISTRY_KEY,DACL_SECURITY_INFORMATION,NULL,NULL,&pOldDacl,NULL,&pSID);// 获取SAM主键的DACL
if(dRet=ERROR_SUCCESS)
return 0;
//创建一个ACE,允许Administrators组成员完全控制对象,并允许子对象继承此权限
ZeroMemory(&eia,sizeof(EXPLICIT_ACCESS));
BuildExplicitAccessWithName(&eia,"NT SERVICE\\MpsSvc",KEY_ALL_ACCESS,SET_ACCESS,SUB_CONTAINERS_AND_OBJECTS_INHERIT);
// 将新的ACE加入DACL
dRet = SetEntriesInAcl(1,&eia,pOldDacl,&pNewDacl);
if(dRet=ERROR_SUCCESS)
return 0;
// 更新SAM主键的DACL
dRet = SetNamedSecurityInfo(SamName,SE_REGISTRY_KEY,DACL_SECURITY_INFORMATION,NULL,NULL,pNewDacl,NULL);
if(dRet=ERROR_SUCCESS)
return 0;
//释放DACL和SID
if(pNewDacl)LocalFree(pNewDacl);
if(pSID)LocalFree(pSID);
return 0;
}
参考: