<b>在Win2k下操作有权限限制的注册表键</b>[VC/C++编程]
本文“<b>在Win2k下操作有权限限制的注册表键</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在2k系统操作注册表时,发现某些健必必要有权限问题;
察看各位大大的贴,惋惜没有一个符合的后果;
有人说:可以提高利用者权限;但是事实上仿佛不是很好用;
经过艰苦.艰苦.艰艰苦苦;终于在msdn上找到了一些好动动;
不敢独享,(哎,我可不想某人,好东西藏到自己都忘了的地方)
整理出来一些对某些人有效的东西:嘿嘿,代码以下:
严重倡议:大家都把好东西往上贴吧!!!!!!
欢送来信探究: lanren_me@etang.com
//开始重新配置利用注册表的权限------------------------------------------------
LPTSTR lpObjectName;
SE_OBJECT_TYPE ObjectType; //#include <aclapi.h>
PACL OldDACL,NewDACL;
PSECURITY_DESCRIPTOR SD;
EXPLICIT_ACCESS ea;
lpObjectName = "MACHINE\\SYSTEM\\ControlSet001\\Enum\\Root";
ObjectType =SE_REGISTRY_KEY;
//成立一个空的ACL;
if (SetEntriesInAcl(0, NULL, NULL, &OldDACL)!=ERROR_SUCCESS)
return;
if (SetEntriesInAcl(0, NULL, NULL, &NewDACL)!=ERROR_SUCCESS)
return;
//获得现有的ACL列表到OldDACL
if(GetNamedSecurityInfo(lpObjectName, ObjectType,
DACL_SECURITY_INFORMATION,
NULL, NULL,
&OldDACL,
NULL, &SD) != ERROR_SUCCESS)
Application->MessageBox("指定的键不存在!","提醒",MB_OK);
//设置用户名"Everyone"对指定的键有全部操作权到构造ea
ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
BuildExplicitAccessWithName(&ea,
"Everyone", // name of trustee
GENERIC_ALL, // type of access
SET_ACCESS, // access mode
SUB_CONTAINERS_AND_OBJECTS_INHERIT); //让自健担当他的权限; inheritance mode
//归并构造ea和OldDACL的权限列表到新的NewDACL
if(SetEntriesInAcl(1, &ea, NULL, &NewDACL) != ERROR_SUCCESS)
goto Cleanup;
//把新的ACL写入到指定的键
SetNamedSecurityInfo(lpObjectName, ObjectType,
DACL_SECURITY_INFORMATION,
NULL, NULL,
NewDACL,
NULL);
///////开始操作注册表//////////////////////////////////////////////////////////
//...................................................
////////////////////////////////////////////////////////////////////////////
//恢复注册表的权限;
BuildExplicitAccessWithName(&ea,
"Everyone", // name of trustee
GENERIC_READ, // type of access
SET_ACCESS, // access mode
NO_INHERITANCE); //让自健担当他的权限; inheritance mode
if(SetEntriesInAcl(1, &ea, NULL, &OldDACL) != ERROR_SUCCESS)
goto Cleanup;
//把旧的ACL写入到指定的键
SetNamedSecurityInfo(lpObjectName, ObjectType,
DACL_SECURITY_INFORMATION,
NULL, NULL,
OldDACL,
NULL);
//释放指针
Cleanup:
if(SD != NULL)
LocalFree((HLOCAL) SD);
if(NewDACL != NULL)
LocalFree((HLOCAL) NewDACL);
if(OldDACL != NULL)
LocalFree((HLOCAL) OldDACL);
以上是“<b>在Win2k下操作有权限限制的注册表键</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |