社区
其它技术问题
帖子详情
如何删除HKEY_CLASSES_ROOT\CLSID中子项?
smartdj1
2011-03-14 09:38:45
WIN7中这个注册表分支中的子项只有TrustedInstaller有完全控制权限,程序没法删除子项,手动操作只有先更改子项的所有者然后更改所有者的权限这个办法可以删除子项,但是如何使用VC来实现?从网络上看到很多提权的程序都没作用。
小弟跪求了。
...全文
1206
11
打赏
收藏
如何删除HKEY_CLASSES_ROOT\CLSID中子项?
WIN7中这个注册表分支中的子项只有TrustedInstaller有完全控制权限,程序没法删除子项,手动操作只有先更改子项的所有者然后更改所有者的权限这个办法可以删除子项,但是如何使用VC来实现?从网络上看到很多提权的程序都没作用。 小弟跪求了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Defonds
2011-03-25
打赏
举报
回复
权限不足?
Lactoferrin
2011-03-24
打赏
举报
回复
ribonucleic_acid@126.com
smartdj1
2011-03-24
打赏
举报
回复
能给我你的联系方式吗?smart.dj@163.com我再去试试。
Lactoferrin
2011-03-19
打赏
举报
回复
如果你要改写dacl,应该使用take ownership特权,先用WRITE_OWNER打开键,改写要删除的键的所有者为自己的账户,然后使用WRITE_DAC打开键,修改dacl,添加自己的账户的DELETE权限,然后再删除
Lactoferrin
2011-03-19
打赏
举报
回复
你搞错我的意思
smartdj1
2011-03-19
打赏
举报
回复
现在创建子项成功了。可是删除却还没有解决。
smartdj1
2011-03-19
打赏
举报
回复
这是我写的代码
// 更新SAM主键的DACL
dwRet = SetNamedSecurityInfo(SamName.GetBuffer(), SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION,
NULL, NULL, pNewDacl, NULL);
返回值为5拒绝访问
没解决啊
smartdj1
2011-03-19
打赏
举报
回复
BOOL TakeRegOwnership()
{
DWORD dwRet;
CString SamName = _T("CLASSES_ROOT\\CLSID\\{0010668C-0801-4DA6-A4A4-826522B6D28F}");
PSECURITY_DESCRIPTOR pSD = NULL;
PACL pOldDacl = NULL;
PACL pNewDacl = NULL;
EXPLICIT_ACCESS ea;
HKEY hKey = NULL;
BOOL result = TRUE;
// 获取SAM主键的DACL
dwRet = GetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDacl, NULL, &pSD);
if (dwRet != ERROR_SUCCESS)
{
goto FreeAndExit;
}
// 创建一个ACE,允许Everyone完全控制对象,并允许子对象继承此权限
ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
BuildExplicitAccessWithName(&ea, _T("Everyone"), KEY_ALL_ACCESS, SET_ACCESS,
SUB_CONTAINERS_AND_OBJECTS_INHERIT);
for (int i = 0; i < 100; i++)
{
if (!DeleteAce(pOldDacl, i))
{
int errorCode = GetLastError();
}
}
// 将新的ACE加入DACL
dwRet = SetEntriesInAcl(1, &ea, pOldDacl, &pNewDacl);
if (dwRet != ERROR_SUCCESS)
{
goto FreeAndExit;
}
// 更新SAM主键的DACL
dwRet = SetNamedSecurityInfo(SamName.GetBuffer(), SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION,
NULL, NULL, pNewDacl, NULL);
if (dwRet != ERROR_SUCCESS)
{
goto FreeAndExit;
}
result = TRUE;
FreeAndExit:
if (hKey) RegCloseKey(hKey);
if (pNewDacl) LocalFree(pNewDacl);
if (pSD) LocalFree(pSD);
return result;
}
// CAutoFitDlg 消息处理程序
BOOL EnablePrivilege(HANDLE hToken,CString szPrivName)
{
TOKEN_PRIVILEGES tkp;
LookupPrivilegeValue( NULL,szPrivName,&tkp.Privileges[0].Luid );//修改进程权限
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL );//通知系统修改进程权限
return( (GetLastError()==ERROR_SUCCESS) );
}
HKEY key;
DWORD dwDisposition;
HANDLE hToken;
if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken) )
{
if( EnablePrivilege(hToken,SE_BACKUP_NAME) )
if( EnablePrivilege(hToken,SE_RESTORE_NAME) )
if( TakeRegOwnership() )
MessageBox(_T("1"));
int a=::RegCreateKeyEx(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\Classes\\CLSID\\{0010668C-0801-4DA6-A4A4-826522B6D28F}\\cool"), 0, NULL,
REG_OPTION_BACKUP_RESTORE, KEY_ALL_ACCESS , NULL, &key,
&dwDisposition);
if ( a != ERROR_SUCCESS )
return FALSE;
//if (!m_bLazyWrite) ::RegFlushKey(hKey);
::RegCloseKey(key);
}
yiyefangzhou24
2011-03-15
打赏
举报
回复
[Quote=引用 1 楼 lactoferrin 的回复:]
首先要以管理员身份运行程序,然后启用take ownership特权即可更改所有者
如果启用了还原特权,就可以在RegCreateKeyEx中传人REG_OPTION_BACKUP_RESTORE绕过dacl获得KEY_WRITE存取
[/Quote]这人是大牛,你试试看,操作系统的高级权限一般正常编写比较难获得
bdmh
2011-03-15
打赏
举报
回复
先提权试试
Lactoferrin
2011-03-15
打赏
举报
回复
首先要以管理员身份运行程序,然后启用take ownership特权即可更改所有者
如果启用了还原特权,就可以在RegCreateKeyEx中传人REG_OPTION_BACKUP_RESTORE绕过dacl获得KEY_WRITE存取
注册表修改大全(作者:Sunny)
每个Win98特殊的东东都有一个提示,比如把鼠标停留在我的电脑上,就会有个提示你我的电脑是什么,改变这个提示并不难,到H
KEY
_
CLASS
ES
_
ROOT
\
CLSID
\{20D04FE0-3AEA-1069-A2D8-08002B30309D},修改右边的InfoTip的...
注册表主键的含义
我们都知道,我们在使用电脑时。在“开始”→“运行”中输入“regedit”并单击“确定”按钮后,可以打开“注册表编辑器”对话框,此时可以看见在左边的窗口中显示了注册表的所有主键。... 1.H
KEY
_
CLASS
ES
_
ROOT
Windows注册表基础知识
Windows注册表基础知识1、注册表简介注册表主键H
KEY
_
CLASS
ES
_
ROOT
H
KEY
_CURRENT_USERH
KEY
_LOCAL_MACHINEH
KEY
_USERSH
KEY
_CURRENT_CONFIG2、注册表危险
项
[^1]Windows LoadWindows Run特殊的16位可执行文件类型Windows ...
注册表的解释和一些简单的修改
注册表的解释和一些简单的修改一、 H
KEY
_
CLASS
ES
_
ROOT
根键 此根键中主要记录着Windows 95/98中所有的文件类型,包括安装操作系统时约定注册的和由于以后安装软件而新加载的各种文件类型,并将不同的文件类型与相应...
Windows注册表内容详解(转载)
一般,在打开第二部分的可疑子
项
后,若该键下的COMMAND下没有内容,就可以删掉了 个性化设置 1、去掉桌面快捷方式上的小键头 位置:H
KEY
_
CLASS
ES
_
ROOT
\LNKFILE
项
:IsShortcut 操作:
删除
此
项
2、隐藏桌面上的所有...
其它技术问题
3,881
社区成员
9,044
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章