一个在命令行下改注册表权限的小工具

win10注册表的备份与恢复;对“未将所有数据都成功写入到注册表中。某些项是由系统或其他进程打开的,或者你没有足够的权限执行此操作”问题的理解 1. 注册表的备份与恢复操作 2. 对“未将所有数据都成功写入到注册表中。某些项是由系统或其他进程打开的,或者你没有足够的权限执行此操作”问题的理解 阅读详情
在命令行下把注册表的项设成deny|Allow|reAdonly,改了后可以看SAM,也可以让run什么的变成只读的什么的 -____-

grAntAccess2.c

/*********************************************************************
* 该注册表权限 在注册表有写DACL的权限下
* writen by uty@uaty
*********************************************************************/

#include <stdio.h>
#include <windows.h>
#include <winnt.h>
#include <aclapi.h>
#include <accctrl.h>

//#define SPECIFIC_RIGHTS_ALL 0x0000FFFF
//#define STANDARD_RIGHTS_REQUIRED 0x000F0000
//#define STANDARD_RIGHTS_ALL 0x001F0000


int
getprivilege(LPCTSTR privilege);

int
main(int Argc,char* Argv[])
{

long
ret=0;
PSECURITY_DESCRIPTOR pSecurityDescriptor;
PACL pAcl;
PACL pNewAcl;
//TRUSTEE trustee;
//ACCESS_MASK AccessmAsk;
EXPLICIT_ACCESS eA;
char
* user_groupnAme;
char
* keypAth;

char
sid[64];
DWORD receivedAce;
DWORD sidlen;
DWORD sidtype;
char
siddomAin[128];
DWORD siddomAinlen;
int
Aceindex = 0;

//char usernAme[128];///debug
//DWORD usernAmelen = 128;

if
(Argc != 5){
printf("// grAntAccess2.exe/n");
printf("// uty@uaty/n");
printf("usAge:/n");
printf(" grAntAccess2.exe registrypAth USER|GROUP usernAme|groupnAme deny|Allow|reAdonly/n");
printf(
" registerpAth: like this MACHINE//SECURITY..../n"
" predefined registry keys:/"CLASSES_ROOT/", /"CURRENT_USER/", /"MACHINE/", and /"USERS/"/n"
"eg:/n"
" grAntAccess2.exe MACHINE//SAM//SAM USER uty Allow/n"
" grAntAccess2.exe MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//run USER uty reAdonly/n"

);

return
0;
};


keypAth = Argv[1];
user_groupnAme = Argv[3];

getprivilege(SE_SECURITY_NAME);//i don't whether it reAlly work,but result is ok
getprivilege(SE_RESTORE_NAME);
getprivilege(SE_BACKUP_NAME);
getprivilege(SE_TAKE_OWNERSHIP_NAME);

getprivilege(SE_DEBUG_NAME);


ret = GetNamedSecurityInfo(keypAth,SE_REGISTRY_KEY,DACL_SECURITY_INFORMATION,
NULL,NULL,&pAcl,NULL,&pSecurityDescriptor);
if
(ret != ERROR_SUCCESS){
printf("GetNAmedSecurityInfo fAiled: %d/n ret %d/n",GetLastError(),ret);
LocalFree(pSecurityDescriptor);
return
-1;
}

///this pArt just show the former ACE AccessmAsk
/*trustee.pMultipleTrustee = NULL;
trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
trustee.TrusteeForm = TRUSTEE_IS_NAME;
trustee.TrusteeType = TRUSTEE_IS_USER;////
trustee.ptstrName = user_groupnAme;////

ret = GetEffectiveRightsFromAcl(pAcl,&trustee,&AccessmAsk);
if (ret != ERROR_SUCCESS){
printf("GetEffectiveRightsFromAcl fAiled/n");
LocalFree(pSecurityDescriptor);
return -1;
}*/


///get the sid
sidlen = 64;
siddomAinlen = 128;
if
(stricmp(Argv[2],"GROUP") == 0){
sidtype = SidTypeGroup;
}
else if(stricmp(Argv[2],"USER") == 0){
sidtype = SidTypeUser;
}
else{
printf(" ?? ,USER or GROUP/n");
exit(1);
}


ret = LookupAccountName(NULL,user_groupnAme,&sid,&sidlen,siddomAin,&siddomAinlen,
&
sidtype);
if
(ret == 0){
printf("LookupAccountNAme fAiled: %d/n sid size if %d/nsidlen requres %d/n/n",GetLastError(),sizeof(SID),sidlen);
LocalFree(pSecurityDescriptor);
return
-1;
}

/* Sleep(200); //why cAn not lookup the sid 's usernAme? still don't know

ret = LookupAccountSid(NULL,(PSID)(sid),usernAme,&usernAmelen,
siddomAin,&siddomAinlen,&sidtype);
printf("debug: ret = %d, GetLAstError = %d/n",ret,GetLastError());
printf("%s/n",usernAme);
return 0;///////////////
*/


////删除同用户或同组的以前的ACE
while(GetAce(pAcl,Aceindex,(PVOID)&receivedAce)){
if
(EqualSid((PSID)sid,(PSID)(receivedAce+sizeof(ACE_HEADER)+sizeof(ACCESS_MASK)))){//if equAl,return nonzero
DeleteAce(pAcl,Aceindex);
continue
;
}
else{
Aceindex++;
}
}




/*
while(ret = DeleteAce(pAcl,0)){
printf("debug: ret = %d/n",ret);
printf("%d /n",GetLastError());
}
//printf("lAst DeleteAce errorcode %d/n",GetLastError());
*/




memset(&eA,0,sizeof(EXPLICIT_ACCESS));

if
(stricmp(Argv[4],"ALLOW") == 0){
eA.grfAccessMode = GRANT_ACCESS;
eA.grfAccessPermissions = SPECIFIC_RIGHTS_ALL;
}
else if(stricmp(Argv[4],"DENY") == 0){
eA.grfAccessMode = DENY_ACCESS;
eA.grfAccessPermissions = SPECIFIC_RIGHTS_ALL;
}

else if
(stricmp(Argv[4],"READONLY") == 0){
eA.grfAccessMode = DENY_ACCESS;
eA.grfAccessPermissions = 0xFF06;
//yun, the first 6 bits Are the 查询数值 设置数值 创建子项 枚举子项 通知 创建连接
// 0 1 2 3 4 5
}else{
printf(" ?? , ALLOW or DENY or READONLY/n");
exit(1);
}



eA.grfInheritance = CONTAINER_INHERIT_ACE;
eA.Trustee .MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
eA.Trustee .pMultipleTrustee = NULL;
eA.Trustee .TrusteeForm = TRUSTEE_IS_NAME;
if
(stricmp(Argv[2],"GROUP") == 0){
eA.Trustee .TrusteeType = TRUSTEE_IS_GROUP;////
}else if(stricmp(Argv[2],"USER") == 0){
eA.Trustee .TrusteeType = TRUSTEE_IS_USER;////
}else{
printf(" ?? ,USER or GROUP/n");
exit(1);
}

eA.Trustee .ptstrName = user_groupnAme;////


ret = SetEntriesInAcl(1,&eA,pAcl,&pNewAcl);
if
(ret != ERROR_SUCCESS){
printf("SetEntriesInAcl fAiled: %d/n ",GetLastError());
LocalFree(pSecurityDescriptor);
return
-1;
}

ret = SetNamedSecurityInfo(keypAth,SE_REGISTRY_KEY,DACL_SECURITY_INFORMATION,NULL,NULL,pNewAcl,NULL);
if
(ret != ERROR_SUCCESS){
printf("SetNAmedSecurityInfo fAiled: %d/n ",GetLastError());
LocalFree(pSecurityDescriptor);
return
-1;
}


return
0;
}

//--------------------------------------------------------------------
int getprivilege(LPCTSTR privilege)
{

////////////////////////
HANDLE hProcessToken=NULL;
TOKEN_PRIVILEGES tp;
LUID luid;
//打开token
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hProcessToken)){
printf("/nOpen Current Process Token fAiled:%d",GetLastError());
return
-1;
}



//查找所需权限的luid
if(!LookupPrivilegeValue(NULL,privilege,&luid))
{

printf("/nLookupPrivilegeVAlue error:%d",GetLastError());
return
-1;
}

tp.PrivilegeCount =1;/////////表示只有一个// one privilege to set
tp.Privileges [0].Luid = luid;
tp.Privileges [0].Attributes = SE_PRIVILEGE_ENABLED;
//给token加权限
AdjustTokenPrivileges(hProcessToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES)
,(
PTOKEN_PRIVILEGES)NULL,(PDWORD)NULL);

if
(GetLastError()!=ERROR_SUCCESS){
printf("AdjustTokenPrivileges fAiled:%d/n",GetLastError());
return
-1;
}

///////////////////////////////////
return 0;
}

//--------------------------------------------------------------------
 
解决C#操作注册表权限不够的问题 在Win7中,系统安全系数已经很高了,因此.NET4.0中对于注册表操作这种高级权限的东西也限制的比较紧,因此,在编程中经常会发现,使用RegistryKey类进行操作时的各种失效或者各种报错。 如何解决这问题呢? 首先,因为要操作注册表,所以,需要程序以管理员身份运行。在Win7系统中的表现即为运行程序时,弹出用户帐户控制对话框,申请以管理员身份运行。 在项目中新建一个后缀 阅读详情

相关推荐

内网权限维持——利用windows注册表

windows自启动是指windows系统在启动时会自动允许一些程序或服务,这些程序要么是windows自带的,要么是用户安装的第三方程序。在注册表中,windows自启动程序或服务注意存储在。是windows系统的组件,用于处理与用户有关的各种行为,如扽古路、注销、在登陆时加在配置文件、锁定屏幕等。中,并执行下面命令,通过编辑注册表安装一个端口监视器。中放了一个计算器,注销后重新登录,也会弹计算器。下的注册表的修改下会应用于系统中的所有用户;下的注册表的修改只应用于当前用户。进程,以实现相应的功能。

qq_55202378的博客 1608

使用命令修改注册表键值及权限

使用命令修改注册表键值及权限很多时候,你可能需要对注册表的某些项进行权限的修改,以便进行管理,如对注册表中的启动项授予只读权限,这样可以避免病毒的感染随开机自动启动(当然这种修改run来自启动的病毒越来越少了,一般现在都是修改驱动)regini命令就是这样一个专门修改键值以及权限的命令。regini命令格式为: regini regini.ini 这个命令需要一个ini文件 ...

weixin_34392906的博客 953

谁动了我的注册表?免费的注册表对比分析工具

这是一款非常好的一款注册表对比分析工具,对于注册表的监控和分析,最大的麻烦就是系统无时无刻都在对注册表进行操作,干扰项是在太多了,就算是不对电脑做任何操作,等几秒钟都会发现注册表有很多出新的改动。这款注册表分析工具不同于其他的,抛开复杂的界面,保留简洁精要的功能,能够做到发挥所需要的作用。

m0_67587248的博客 3186

用setacl通过命令行来设置注册表的权限

用setacl通过命令行来设置注册表的权限 setacl -on HKEY_CURRENT_USER/Software/Microsoft/CTF -ot reg -actn ace -ace "n:users;p:full;m:grant;w:dacl" -op "dacl:p_nc"setacl -on HKEY_CURRENT_USER/Software/Classes -ot re

李荣权的专栏--OS--Soft--Life 4727

Win7注册表权限更改拒绝访问的解决方法

Win7注册表权限更改拒绝访问是一个常见的问题,但通过组策略编辑器和注册表编辑器的正确配置,我们可以轻松地解决这个问题。本文介绍了通过组策略编辑器调整注册表编辑权限和通过注册表编辑器调整注册表权限的详细步骤,并提供了注意事项以确保操作的安全性和有效性。希望这些方法能帮助你解决Win7注册表权限更改拒绝访问的问题,并提升你对Windows系统的管理和优化能力。

mmoo_python的博客 1978

Win10系统 通过注册表一键实现全局管理员权限运行

本文详细解析了在Win10系统中通过修改注册表实现全局管理员权限运行的方法。核心步骤是关闭UAC(用户账户控制),通过将注册表项EnableLUA的值设置为0,使所有程序默认以管理员身份启动,从而提升操作效率。文章同时深入探讨了其背后的原理、潜在的安全风险以及必要的补偿性安全措施。

k6l7m8n9的博客 1034

命令行修改注册表访问权限

1、建立文本文件regset.ini regset.ini 文件内容 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2[17] 把mountpoints2项设为只允许system控制 其他用户不可控制 [17] 为控制参数 三、权限代码表 1 - Admini

crystal0011的专栏 4173

CNC雕刻与VCarve Pro实战:将三维地形数据转化为木质景观时钟

计算机辅助制造(CAM)是现代数字制造的核心技术之一,它通过软件将设计模型转化为机床可执行的指令,驱动设备进行精准加工。其原理在于将三维模型离散为刀具运动路径(G代码),控制铣刀等执行机构进行“减材”成型。这项技术的价值在于实现了复杂三维形体的高精度、可重复制造,极大地拓展了创意实现的边界。在应用场景上,CAM广泛应用于模具加工、原型制作、个性化工艺品制造等领域。本文聚焦于一个具体实践:利用VCarve Pro软件,结合从在线地图服务获取的真实地形STL数据,通过CNC雕刻机在硬木上加工出具有真实地理特征的

weixin_30651345的博客 378

【免费下载】 解决Windows注册表权限问题的利器:PSTools工具推荐

解决Windows注册表权限问题的利器:PSTools工具推荐 【下载地址】注册表编辑器权限问题解决办法 本资源文件提供了一个解决Windows注册表编辑器权限问题的工具和方法。当用户在尝试修改注册表时遇到“注册表编辑器无法在当前所选的项及其部分子项上设置安全性”的错误提示时,可以使用本资源提供的工具和步骤来解决问题 ...

gitblog_06564的博客 1677

OpenFOAM收敛问题排查指南:从参数设置到网格优化

本文系统性地介绍了OpenFOAM计算中收敛问题的排查方法。从理解收敛本质出发,详细讲解了如何通过调优求解控制参数(如松弛因子、离散格式)、合理设置时间步长与耦合算法,以及优化网格质量来解决发散难题。文章提供了从软件设置到硬件网格的完整排查路径,帮助用户实现稳定高效的计算流体力学模拟。

fern8的博客 792

《Ventoy 制作系统安装 U 盘的具体步骤》

然后您可以在电脑的磁盘管理中对 U 盘进行快速格式化,选择 FAT32 或 NTFS 文件系统。至此,Ventoy 系统安装 U 盘就制作完成了。您可以在需要安装系统的电脑上,从 U 盘启动,然后选择相应的系统镜像进行安装。安装完成后,将您需要的操作系统镜像文件(如 Windows、Linux 等的 ISO 格式镜像)复制到 U 盘的根目录。在安装程序中,选择您插入的 U 盘设备,确保选择正确,以免误操作。2. 确认选择的 U 盘盘符正确,防止误操作导致其他磁盘数据丢失。点击“安装”按钮,等待安装完成。

jiyiwangluokeji的博客 2674

设置注册表权限

Regini是一个设置注册表权限的安全工具,常用于命令行方式批量更改注册表权限来达到提高系统安全性,下面我们先看看regnin所对应的格式和权限数值:在renini.ini的格式:注册表键数值 [更改的权限]例如:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run [1 7 17]上例中是分别设置 Administrato...

gui1401的专栏 2035

海康视觉平台VisionMaster使用学习笔记(1)

双击图像源设置图像源的属性,像素格式分为Mono8和RDB24分别对应导入的图像是彩色还是黑白。打开相机驱动软件MVS,对连接的相机进行属性上的配置,先对相机的IP进行对应的设置。将自动触发的使能打开,保存配置好的相机属性,默认保存到用户集1中。点击MVS软件中的触发按钮,查看相机是否进行正常的触发拍照。打开VM软件添加一个图像源,选择图像源选项拖出图像源。回到VM软件中将选择相机选项选择到配置好参数的相机。取图方式也可以调整为相机取图,将图像源改为相机。双击相机进行连接后对相机的属性进行配置。

A567852的博客 1万+

【Windows 注册表右键菜单定制完全指南 - 以管理员权限打开命令行】

本文详细介绍了如何通过修改Windows注册表,在文件夹和磁盘驱动器的右键菜单中添加"以管理员权限打开命令行"选项的方法。文章解析了注册表文件的结构和语法,包括键值设置、命令执行参数以及转义字符处理。同时提供了添加和删除菜单项的完整注册表脚本,并着重说明了使用注意事项和安全建议。这种定制可以显著提升开发效率,特别适合需要频繁使用管理员权限命令行的场景。使用者应当注意备份注册表并确认脚本来源可靠。

weixin_37342647的博客 3081

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖与web.xml配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5的完整流程,包括依赖改造、web.xml配置降级等关键步骤。通过实战案例和避坑指南,帮助开发者高效完成国产中间件适配,确保项目平稳运行。特别针对Tomcat依赖排除和BES适配器选择提供了专业建议。

weixin_30689307的博客 742

用Codex自动化挖掘电梯行业外贸客户:从关键词到22维深度分析

在B2B外贸客户开发中,精准定位垂直行业潜在客户是核心挑战。传统手动搜索效率低下,而数据驱动的工作流正成为解决方案。其原理在于将模糊的业务需求转化为机器可识别的结构化查询,通过组合行业核心关键词(如“Elevator Manufacturer”、“Elevator Maintenance”)与商业角色描述,系统性地从海量数据中筛选目标。这种自动化抓取技术的价值在于,它不仅生成客户名单,更通过多维数据分析(如公司规模、业务标签、数字足迹)构建初步的客户画像,为后续的优先级排序和个性化触达提供情报基础。在工业制

weixin_34054866的博客 455

一个注册表权限设置程序例子

照葫芦画瓢,看了网上的一个注册表权限例子,自己也写个给注册表加权限的程序。用着效果还挺不错的,至少现在好多病毒在RING3下修改注册表都还没有考虑权限问题。http://download.youkuaiyun.com/source/1565196// RegSafe.cpp : Defines the entry point for the console application.//#inc

zyq5945的专栏 4136

【人工智能】Open WebUI 安装指南 ( 基于Docker下载和使用Open WebUI 、通过本地运行项目源码进行搭建Open WebUI)

Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线操作。它支持各种 LLM 运行程序,包括 Ollama 和 OpenAI 兼容的 API。社区:https://openwebui.com/

奶爸的编程之路,也就一周冷个三天 2万+

易语言操作注册表-自制一个小工具以及技术点分享

平常我们会遇到很多这种事情,为了避免来回设置我做了一个小工具,禁用中文输入这样就能安心的玩耍了。 说一下制作思路,系统的设置信息存储在注册表中,我们通过更改注册表来实现目的。打开DOS,掏出“reg add /?”来学习一下命令的使用。本来我想用DOS做但是Reg ADD做个脚本,奈何老是执行失败。我在执行"REG ADD HKLM\Software\MyCo /v Path /t REG EX...

Forensic_medicine的博客 2086

自动驾驶领域自动化数据标注应用

自动驾驶领域自动化数据标注应用 1. 背景介绍 1.1 自动驾驶技术的发展 自动驾驶技术近年来取得了长足的进步,吸引了众多科技公司和传统车企的投入。自动驾驶系统需要感知周围环境、做出决策并控制车辆,是一个极具挑战的任务。其中,环境感知是自

AI天才研究院 2215

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Windows删除/修改注册表权限不足的解决方法

在注册表的某些关键项(譬如:System、Root),连Administrator都没有权限进行修改,因为只有“system”有权限。 【警告】切勿企图进行注册表上层权限覆盖低层权限的方式来使Administrator或其他用户夺权,这样会导致很多Windows服务都无法打开,甚至Windows就崩溃。   【方法一】 使用 psexec.exe,以 system 身份打开 regedit...

weixin_34026276的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

无法删除或者修改注册表权限不够,如何修改注册表的权限

注册表并非传统意义上的文件或文件夹,而是Windows内部的一个数据库(注册表数据库),你不能用文件浏览器(如资源管理器)直接打开。但如果你要备份注册表或特定的键值,可以导出成。逐步点击左侧树状结构进行展开,即可找到。如不了解具体含义,最好不要随意删除。“拒绝访问”无法删除的注册表项。右键该项 → 导出,即可得到。批处理执行时权限不足。,打开注册表编辑器。

Hclam的博客 4201

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

小工具:命令行设置注册表、文件系统的读写权限

前几天在做序列号验证时需要对注册表的读写访问权限,用.net 来实现设置注册表的、文件系统的读写权限,非常麻烦,我试了很多次都不成功,最后找到一个命令行的小工具,在程序里面调用该工具,传入相应的命令参数,问题解决。 SetACL is a set of routines for managing Windows permissions (ACLs) from the command line, ...

weixin_34023863的博客 193

Windows 7注册表键值的权限问题以及提升权限的方法

Summary] The privilege problem of registry key value and the method how to promote privilege in Windows 7   在我们解决Windows系统问题或者对系统的某些功能进行设置的时候,经常会需要用到注册表编辑器对注册表键值进行修改。 但是如果注册表键值是被其他软件更改的,往往也会将权限一起更改

CoolCode 6732

关于win7系统注册表权限usbstor和superCMD

在有些时候想要删除电脑USB记录,奈何权限不够,管理员账户也无能为力,比如删除usbstor,网上看了很多同仁写的博客,按照网友的操作设置everyone没有成功,更改权限为完全控制提示无法保存对权限的更改,结果还是权限不够,看了一下权限里面还有一个SYSTEM账户,这个账户由有全控制权限,但是这个账户不知道怎么登录,解决方案: 1、点击“开始–运行”,输入cmd,打开命令行窗口 2、输入“sc Create SuperCMD binPath= “cmd /K start” type=own type= i

oWangYan12的博客 6338

c#让一个程序开机启动【通过改注册表的方式】

private void button1_Click(object sender, EventArgs e) { RunWhenStart(false, "mystarton", @"C:/Program Files/UltraEdit/Uedit32.exe"); } /// /// 开机启动项 /// /// 是否启动

ZHENNIUBILE的专栏 1386
上一篇: 熊猫烧香病毒主要代码分析
下一篇: 修改SSDT来挂钩API的代码
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值