#include <Windows.h>
#include <Aclapi.h>
#pragma comment (lib,"Advapi32.lib")
void main()
{
DWORD dwRet;
LPSTR SamName = "MACHINE\\SAM\\SAM";
PSECURITY_DESCRIPTOR pSD = NULL;
PACL pOldDacl = NULL;
PACL pNewDacl = NULL;
EXPLICIT_ACCESS ea;
HKEY hKey = NULL;
// 获取SAM主键的DACL
dwRet = GetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION,
NULL, NULL, &pOldDacl, NULL, &pSD);
if (dwRet != ERROR_SUCCESS)
{
printf("GetNamedSecurityInfo Error: %d\n", dwRet);
goto FreeAndExit;
}
// 创建一个ACE,允许Everyone完全控制对象,并允许子对象继承此权限
ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
BuildExplicitAccessWithName(&ea, "Everyone", KEY_ALL_ACCESS, SET_ACCESS,
SUB_CONTAINERS_AND_OBJECTS_INHERIT);
// 将新的ACE加入DACL
dwRet = SetEntriesInAcl(1, &ea, pOldDacl, &pNewDacl);
if (dwRet != ERROR_SUCCESS)
{
printf("SetEntriesInAcl Error: %d\n", dwRet);
goto FreeAndExit;
}
// 更新SAM主键的DACL
dwRet = SetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION,
NULL, NULL, pNewDacl, NULL);
if (dwRet != ERROR_SUCCESS)
{
printf("SetNamedSecurityInfo Error: %d\n", dwRet);
goto FreeAndExit;
}
// 打开SAM的子键
dwRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SAM\\SAM\\Domains\\Account\\Users\\000001F4",
0, KEY_ALL_ACCESS, &hKey);
if (dwRet != ERROR_SUCCESS)
{
printf("RegOpenKeyEx Error: %d\n", dwRet);
goto FreeAndExit;
}
printf("Open SAM Subkey Successfully.\n");
FreeAndExit:
if (hKey) RegCloseKey(hKey);
if (pNewDacl) LocalFree(pNewDacl);
// 还原SAM主键的DACL
if (pOldDacl) SetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION,
NULL, NULL, pOldDacl, NULL);
if (pSD) LocalFree(pSD);
return;
}
分享到:
相关推荐
通过编程的方式修改注册表的权限,以便在程序中修改注册表的某些键值。比如编写驱动的Enum键等
照葫芦画瓢,看了网上的一个注册表权限例子,自己也写个给注册表加权限的程序。用着效果还挺不错的,现在好多病毒在RING3下API修改注册表都还没有考虑权限问题。
本文件用于修改注册表来修改默认的打开方式,在reglist.txt文件中输入你想修改的默认打开方式后缀,运行程序后,reglist.txt中的后缀的默认打开方式将会被更改为记事本。然后程序会生成一个outreglist.reg的文件,...
注册表权限设置;注册表权限设置;注册表权限设置;在注册表编辑器窗口,选中:【计算机】--【HKEY_CURRENT_USER】,再点击栏目:【编辑】--【权限】;打开【HKEY_CURRENT_USER】权限对话框,查看是否有登陆名...
为了确保创建安全的环境,Windows 管理员通常需要了解特定用户或用户组对文件、目录、注册表项和 Windows 服务等资源具有哪种访问权限。AccessChk 能够通过直观的界面和输出快速回答这些问题。 AccessEnum 这一简单...
无法导入C:\Users\Administrator\Desktop\fix.reg:未将所有数据都成功写入到注册表中。某些项是由系统或其他进程打开的,或者你没有足够的权限执行此操作。 具体可参考: ...
公司最近封权限,结果把注册表编辑器也给封了,十分不爽。后来发现用程序直接改注册表好使,于是就写了这么一个程序,主要的作用就是将注册表中的一个键值通过程序给改了,改完之后就可以有权限操作注册表了。
注:需要系统管理员权限,方可正常修改注册表。 Show ALL-Files(附Delphi7源码).rar 文件大小:319KB 附注: 很多恶意软件和病毒伪装成系统隐藏文件,并通过修改注册表阻止用户显示系统隐藏文件,来达到不被...
症状是在开始菜单中点击“运行”,在运行框中输入regedit命令时,注册表不能 够使用,并发现系统提示你没有权限运行该程序。注册表锁定的原理是由于注册的 HKEY_CURRENT_USER\Software \Microsoft\Windows\Current...
在本解决方案中,我们使用了注册表编辑器来修改注册表的权限设置。我们将UserData的所有者更改为 Administrators,并且勾选了替换子容器和对象的所有者。这一步骤可以确保注册表的权限设置正确,从而解决无法打开...
这类错误可能是由于注册表的写入权限不足所致,导致安装程序无法将程序写入注册表的 Internet Explorer/Main/ 中。在本文中,我们将逐步讲解如何解决 Office 2010 安装的 1406 错误。 解决方法: 1. 打开注册表...
注册表是Windows的核心数据库,包含了应用程序和计算机系统的全部配置信息、中英文Windows 98系统和应用程序的初始化信息、应用程序和文档文件的关联关系、硬件设备的说明、状态和属性以及各种状态和数据等。注册表...
注册表的安全性非常重要,用户可以通过注册表编辑器来设置注册表的访问权限和保护注册表免受恶意攻击。同时,注册表也需要定期备份,以免系统崩溃或注册表损坏时,造成严重的后果。 注册表是系统中非常重要的组件,...
然而,在安装软件或应用程序时,可能会出现注册表被篡改的情况,这将导致系统设置被修改,影响系统的性能和安全性。为了防止注册表被篡改,需要锁定注册表,下面是锁定Win7系统注册表的步骤。 锁定Win7系统注册表的...
注册表安全 二、注册表的常见安全设置 5、备份注册表 注册表以二进制形式存储在计算机硬盘上,错误地修改注册表的内容,将影响到系统的正常运行,对注册表进行备份操作十分有必要。 网络安全原理与应用:注册表安全...
由于我的小程序查错步骤很多,一有错误就会显示出来(要么是弹出消息框,要么是在标题栏显示),因此发现了很多有趣的地方,比如:HKEY_LOCAL_MACHINE\SECURITY和HKEY_LOCAL_MACHINE\SAM\SAM的权限很高,连KEY_READ都...
对Windows操作系统稍有了解的用户都听说过注册表,听说过修改注册表的神奇功用,你知道什么是注册表吗? 注册表并不神秘,简单地说,它是用来对Windows操作系统进行配置的一个工具。通过它,可以对操作系统及应用...
要解除程序运行锁定,需要使用注册表编辑器来修改“RestrictRun”键值的值。具体步骤如下: 1. 重启计算机,按F8键进入“带命令行的安全模式”。 2. 以超级管理员身份输入密码登录。 3. 输入“regedit”后回车,...
通过查看日志文件、更改注册表权限和重新安装驱动程序,我们可以成功解决这个问题。 此外,我们还需要了解驱动程序的基本概念和安装方法。驱动程序是计算机硬件的软件接口,用于控制硬件的运行。安装驱动程序需要...
通过传递一个命令行,在程序中实现对自运行的添加, 这是针对WIN7下的有 MainFest 的文件,无法自动启动的情况而做的. 可以间接提升权限修改注册表.