API实现了regedt32修改注册表权限(幻影 zzzevazzz)
2005-01-20 03:26
1101 查看
昨天想找个system权限修改注册表的例子,感谢eva写了一个 不过小榕ca.exe的源代码到底公布了没有 我还真是忘记了
不要老是盯着SYSTEM权限。SYSTEM固然通行无阻,但访问SAM这种事有admin足够了。
虽然admin不能直接访问SAM,但可以获取访问权限。
我给个例子你自己修改吧。
Codz:
这段代码其实是通过调用API实现了regedt32修改权限的功能。
P.S. 本来想用RegGetKeySecurity和RegSetKeySecurity的,但SetEntriesInAcl的时候总是“参数错误”,不知道问题出在哪里,郁闷。
不要老是盯着SYSTEM权限。SYSTEM固然通行无阻,但访问SAM这种事有admin足够了。
虽然admin不能直接访问SAM,但可以获取访问权限。
我给个例子你自己修改吧。
Codz:
#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; } |
P.S. 本来想用RegGetKeySecurity和RegSetKeySecurity的,但SetEntriesInAcl的时候总是“参数错误”,不知道问题出在哪里,郁闷。
相关文章推荐
- API实现regedt32修改注册表权限
- c#实现开机自动启动,以及解决修改注册表权限不足
- API修改访问注册表的权限
- 用VBScript实现对Windows注册表的修改
- 使用REGINI修改注册表权限
- Java 修改Windows注册表,以实现开机自启动应用程序。
- C#设置注册表权限失败,修改应用程序以管理员身份执行
- 用API修改注册表的完整模块
- 通过修改注册表来更改系统签名认证权限
- 通过修改注册表实现IE8固定显示微软雅黑字体
- windows7系统软件默认安装路径利用注册表实现修改
- 通过HOOK系统的API接口实现对API功能的修改
- 手动修改注册表实现Windows 隐藏账户
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
- 有管理员权限无法修改注册表解决办法
- Windows删除/修改注册表权限不足的解决方法
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout
- win7系统软件安装失败怎么修改注册表权限?
- Win10 Mobile预览版越狱解锁 更多修改注册表实现效果出炉
- beego应用做纯API后端如何使用jwt实现无状态权限验证