社区
其它技术问题
帖子详情
如何删除HKEY_CLASSES_ROOT\CLSID中子项?
smartdj1
2011-03-14 09:38:45
WIN7中这个注册表分支中的子项只有TrustedInstaller有完全控制权限,程序没法删除子项,手动操作只有先更改子项的所有者然后更改所有者的权限这个办法可以删除子项,但是如何使用VC来实现?从网络上看到很多提权的程序都没作用。
小弟跪求了。
...全文
1196
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)
注册表修改大全 作者:Sunny 编辑:Sunny 编辑日期:2002年12月17日 23:11分 :http://www.sunny.com/WinME : sunny@elong.com ★ 更改关闭应用程序时出现“等待”对话框的时间 有时应用程序因某种原因,会没有响应,当我们按下CTRL+ALT+DEL来结束应用程序时,系统要等一段时间才能结束任务,我们可以修改注册表来减少这段时间。 打开注册表,找到主键:“H
KEY
_CURRENT_USER\Control Panel\d
es
ktop”,在右侧窗口新建一“字符串值”,将其命名为“WaitToKillAppTimeOut”。双击“WaitToKillAppTimeOut,然后在“编辑字符串”对话框的“键值”框中输入5000(单位为ms,缺省值为20000ms,即20秒),为了缩短系统关闭应用的等待时间,您可以将此等待时间降低为20000ms以下,如10000ms、15000ms等。 ★ 启动时给自己个欢迎窗口 打开注册表,找到主键: “H
KEY
_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Winlogon”,在右边窗口新建两个字符串,“LegalNoticeCaption”和“LegalNoticeText”。 “LegalNoticeCaption”是指弹出窗口的标题,修改它的值。在这里自己可以随便起个名字如“我的计算机”。 "LegalNoticeText",是指你想在登录对话框中显示的文字,如改为“祝你今天工作愉快!”这样,以后启动电脑时会自动弹出这个欢迎框。 ★ 设定口令的最小长度 通常登陆口令可以设置为空。为了安全起见,可以设定口令的最小长度,以防止口令被破解。 打开注册表编辑器,找到主键: “H
KEY
_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Polic
es
\ Network”键下。 在右侧窗口中新建二进制键值“MinPwdLen”,值为设定的口令的最小长度,默认值为0,表示口令可以为空。如设为“3”,则口令最小长度为3。 ★使Windows口令必须为数字和字母 设定口令为字母和数字,可以增加别人破你的口令的难度,如果口令长度足够长,则很难破解。打开注册表,找到: H
KEY
_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Polici
es
\Network分支,在右窗格内新建一个DWORD值为“AlphanumPwds”,修改“AlphanumPwds”键值,在出现的对话框中的“键值”框内输入1。 ★ 防止匿名用户登录 WINDOWS的本身的登陆窗口安全性很差,在不知道口令的情况下可以轻易点“取消”或按“
ES
C”键轻松进入。修改注册表可以防止匿名用户登陆。 打开注册表,找到主键: “H
KEY
_LOCAL_MACHINE\Network\Logon”,新建DWORD值,名为“MustBeValidated”,键值为“1”;再重新启动机器后,你会发现通过点击Cancel按钮进Windows的办法已经不灵了。(如果自己都进不去了,可以以安全模式进入,然后将其值改为0。) ★禁用注册表编辑器Regedit 通过修改注册表,可以控制整个机器,可以禁止修改注册表,防止别人破坏H
KEY
_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Polici
es
\System,如果你发现“Polici
es
”下面没有“System”,则在它下面新建一个主键,名字就是“"System”,然后在右侧窗口中新建一个DWORD,名字取为“DisableRegistryTools”,修改它的值为“1”,以后,别人、甚至是你都无法再用regedit.exe 啦,如果要恢复的话,用记事本建立一个REG.REG文件,保存后双击即可导入注册表 REGEDIT 4 [H
KEY
_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Polici
es
\System] "DisableRegistryTools"=dword:00000000 。 ★禁用口令缓存 打开注册表,找到主键: H
KEY
_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Polici
es
\Ne
注册表主键的含义
我们都知道,我们在使用电脑时。在“开始”→“运行”中输入“regedit”并单击“确定”按钮后,可以打开“注册表编辑器”对话框,此时可以看见在左边的窗口中显示了注册表的所有主键。对于Windows 2003/2000/XP 来说只有五个主键。新手要想看的懂注册表就必须了解这五个主键的指向是什么。下面我们就来一起学习下注册表主键的具体含义。 1.H
KEY
_
CLASS
ES
_
ROOT
注册表的解释和一些简单的修改
注册表的解释和一些简单的修改一、 H
KEY
_
CLASS
ES
_
ROOT
根键 此根键中主要记录着Windows 95/98中所有的文件类型,包括安装操作系统时约定注册的和由于以后安装软件而新加载的各种文件类型,并将不同的文件类型与相应的应用程序关联起来。1. 在已定义的很多文件类型中都可以找到shell\open\command这个主键,其键值决定了双击此类型文件后,系统将自动调用哪个应用程
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 ShellPending File Rename Operations3、优化注册表清理多余的DLL文件安装卸载应用程序的垃圾信息系统安装时产生的无用信息4、总结 1、注册表简介 注册表
Windows注册表内容详解
Windows注册表内容详解 (2011-04-05 10:46:17) 标签: 注册表 系统优化 开机加速 美化 系统清理 it 分类: 把复杂变简单 转载备用,若侵则删 来源:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html 第一课 注册表基础 一、什么是注册表 注册表是windows操作系统、硬件设备以及客户应用程序得以正常运行和保存...
其它技术问题
3,882
社区成员
9,045
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章