.NET Core 读写Windows注册表 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1459559 是的,你没看错!...即使 .NET Core 被设计为跨平台,但这并不意味着无法使用特定于平台的API。以 Windows 注册表为例,尽管.NET Standard 不能包含这样的API。...但是,仍有一种办法可以在.NET Core 应用程序中使用 Windows 注册表。...但首先,你必须清楚,使用特定于平台的 API (如 Windows 注册包) 将使您的应用程序或这部分代码 只能跑在Windows上。 检查平台 我们知道这样的代码只能跑在Windows下。...所以在常规实践里,我们需要判断当前操作系统的类型,以免两行泪。
对于COM,一般用CoCreateInstance来创建对象,这就要求COM的dll要用regsvr32注册,因为CoCreateInstance是要读注册表信息完成相应操作的。...CoCreateInstance主要的工作是读注册表,然后CoLoadLibrary,调用DllGetClassObject,最后CreateInstance创建对象。...如果我们自己来实现CoCreateInstance的工作,就可以实现无注册表的COM调用。 假设有个简单COM,接口很简单,就是个减法函数。...} else { cout << "CoLoadLibrary Failed." << endl; } } 于是我们想,能不能不改变调用的代码来实现无注册表的...万能的 Hook是可以做到的。 Hook Ole32.dll的CoCreateInstance方法。
它一直在不断发展,引入了新功能,例如横向移动、泄露电子邮件和浏览器数据的能力,以及安装其他恶意软件的能力。一项新技能是将加密数据插入注册表。...我们从 Trustwave 的 DFIR 和全球威胁运营团队收到的请求之一是让我们解密 Qakbot 创建的注册表数据。我们适时地投入到这项任务中,并且,因为它有点有趣,所以决定写博客。...Qakbot 的注册表数据解密流程。...xaf\x46\xeb\xc0\xe3\xc7\xf6 \x9b\xf1\x97\x2b\x05\xd5\xca\x06\x8f SHA1 哈希结果将用作派生密钥,以使用 RC4 算法解密与 ID 相关的注册表项值数据...-h,--help 显示此帮助消息并退出 -r REGISTRY_PATH,--regpath=REGISTRY_PATH 存储 Qakbot 加密数据的注册表路径
0x00 前言 知名恶意软件Poweliks曾使用过的一个后门技术,在注册表启动位置创建一个特殊的注册表键值,通过mshta来执行payload 对于这个特殊的注册表键值,在正常情况下无法对其访问,这其中的原理是什么呢...本文将要一一介绍 0x01 简介 本文将要介绍以下内容: ·隐藏注册表的原理 ·隐藏注册表的实现 ·程序编写上需要注意的问题 0x02 原理 注册表键值名称经过特殊构造: 以”\0”作为开头,后面加上任意字符...、删除隐藏注册表键值,思路如下: 对于注册表项的隐藏,在注册表项的名称首位填”\0”即可 对应注册表键值的隐藏,原理上也是在键值的名称首位填”\0”,但在参数传递上需要注意更多问题 1.不需要修改的功能...创建注册表键、打开注册表键和删除注册表键的功能不需要修改,使用正常的名称即可 2.设置注册表键值 对应源代码中的MySetHiddenValueKey 传入参数使用char型数组,,用来定义注册表键值名称...参照2,需要注意”\0”的影响 4、删除注册表键值 对应源代码中的MyDeleteHiddenValueKey 参照2,需要注意”\0”的影响 实际测试: 创建注册表项test2,创建隐藏注册表键值\
通过命令删除: sc delete ServiceName 通过修改注册表直接删除 1 运行-->regedit 打开注册表 2 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet...\Services 中删除相应的键值
上一篇博文中主要介绍了Reactos中大部分函数的思路和HKEY和HANDLE之间的关系,本文将介绍一些Reactos中有意思的函数和存在bug的函数。...假如你是这个函数的实现者,你要思考这个函数的实现思路。...这个方法的优点是简单。但是Reactos实现的思路却不是这样的。我列一下我改写的该函数。...PWCHAR Ptr = NULL; ULONG Disposition = 0; // 通过将\\改成结尾符,逐个去掉最后一个键名,查看什么路径的注册表键存在...如果不是返回STATUS_OBJECT_NAME_NOT_FOUND,则说明要创建的路径上的键的父键是存在的,直接返回创建的结果;否则说明父键就不存在,得依赖之后的步骤将父键创建起来。
要做注册表沙箱,就必须要了解部分注册表知识。而注册表的知识很多,本文主要讲述如何在win32系统是上识别注册表映射的。 ...在我的xp 32bit系统上,Win+R regedit之后打开注册表管理器。...如果关注过注册表的同学可能发现过一个现象:修改HKEY_CURRENT_USER下某键项值为A,搜索A,可以搜索到1~3个结果,不仅值相同,其项的父键名等都一样。这种被“同步”的功能是不是很有意思。...如果Hook过NtOpenKey的同学可能发现过一个现象,我们参数中的注册表路径往往是\Registry\User\……或者\Registry\Machine\……的形式,而没有见过其他形式的路径。...HKEY_CLASSES_ROOT 和HKEY_CURRENT_CONFIG对应的注册表也是很固定的,分别是\Registry\Machine\SOFTWARE\Classes和\Registry\Machine
,该函数根据传入的KEY_INFORMATION_CLASS不同而查询该项不同结构体的数据。...我们写的API,往往会接受调用方传入的一些数据。如果这个数据是个很大的且没有固定结构的数据时,那么就要非常注意这个空间的大小了。...在我们重写的RegEnumKey中对用户传入的数据进行填充前,我们要先准确无误地获取数据,而用户传入的空间和大小我们不能用,因为我们不知道他对不对,于是我们要先分配一个适合大小的空间,调用NtEnumerateKey...是的,Reactos对RegEnumKey的实现则是利用用户传入的空间大小,而没有用其传入的空间,这样一旦空间过小,会快速发现,而不用等数据都查完了才发现用户传入的空间太小。...但是现在存在一个问题,如果用户传入的空间大小特别大,实际用不到这么大的数据,那怎么办?难道我们也要听从用户分配一个巨大的内存空间么?
因为RegXX系列函数在底层使用了NtXX系列函数,如果在注入DLL执行Hook后的逻辑中使用了RegXX系列函数,将会导致递归调用的问题,就让程序产生“蛋生鸡,鸡生蛋”这样的“思考”,可是程序不知道停止...于是使用Nt函数实现我们曾经习惯使用的RegXX函数是必要的。(转载请指明出处) 编写这块代码时,我参考了reactos注册表相关的源码。...它的源码写的很好,但是也存在一定的漏洞,我会在之后介绍。 ...因为我们Hook的是Nt式函数,我们在函数中可以获取键对应的HANDLE,而不会得到HKEY。于是我们关心的是HKEY和HANDLE转换的过程。...如果是以上主键,这些主键的后28位是一个数组的Index,该数组保存的其对应的HANDLE。
1264 (22003): Out of range value for column 'num' at row 1 mysql> 对于MySql,如果我们向mysql特定的类型中插入不合法的数据...反过来,我们如果已经有数据被插入到MySql中了,一定是插入的时候是合法的 所以MySql中一般而言,数据类型本身也是一种约束,约束程序员尽可能进行正确的插入,约束使用者,如果你不是一个很好的使用者,...MySql也能保证数据插入的合法性。...就能保证数据库中的数据是可预期,完整的 MySql表中建立属性列:列名称 类型在后,如num tinyint unsigned; 这是tinyint类型我们所需要注意的,同时,尽量不使用unsigned...decimal decimal也是mysql中的浮点数类型,float存储数据时,小数比较大,或者小数位点比较多存储的就不太准确了,这与浮点数存储规则有关(mysql中的float浮点数精度为是7)。
该项目的需求要求我们的沙箱具有良好的安全性和兼容性。当时我们研究了SandBoxIE和360的沙箱,基本确定通过“重定向”思路来实现这款沙箱。而我主要负责研究注册表这块。...说的“程序化”点,就是比如Create(APath) 要试图创建APath路径的对象(文件,注册表键等),我们通过Hook到Create的底层函数,获取APath,通过一定的规则将APath转换为BPath...打个比方,一个操作要枚举Classes Root注册表键,难道我们要将成千上万子键的Classes Root拷贝到我们重定向的键下么?...于是定下以下规则: 原始对象不能修改(修改值,属性,删除) 创建,我会在重定向注册表(其实就是真实注册表一个子键)中创建它。 枚举、查询、打开、关闭,我会综合原始注册表和重定向表之后去操作。...修改,我会在对应的重定向注册表中修改它 删除,我优先在重定向表中删除,其次再“操作”原始注册表(不是真删除,而是找个位置做标记) 基于以上的原则和规则,就可以开始我们的开发之旅了。
今天为了KPI,搞了一天的PPT,搞得恶心想吐。最后还是回到这儿,这儿才是我的净土,可以写写我的研究。 这儿讲一些Reactos中一些明显的错误。...(转载请指明出处) 在Reactos的RegQueryInfoKeyW中有段这样的实现 if (lpcbMaxSubKeyLen !...Reactos源码中对这些长度数据的处理最后都加上了1,使我很不解,看MSDN,对这些变量的说明是pcMaxSubKeyLen [out, optional] A pointer to a variable...可以见得,这些数据都不含结尾符的,那干嘛还要+1呢?我只能理解为,如果数据没按WCHAR对齐,在除以sizeof(WCHAR)后,数据将“缺”一位,于是就要多加一个1。...但是它没有考虑到子键和子项不存在的情况。 我修改后的代码是 if ( NULL !
开源和容器化重新设计了一种高效的价值流,可以为多种类型的生态系统构建多种类型的应用程序,但是组织如何使用几种不同的公共来源(或注册表)来存储,管理和部署其容器化应用程序?...托管存储库-使用Nexus存储库将您自己的容器映像以及第三方映像上载到私有Docker注册表。这些注册表的细粒度权限为开发团队和组织提供了增强的安全性。.../library/mysql:5.7 The push refers to repository [registry.idevops.site/library/mysql] c187f0dccfe2:...,通过用于容器存储管理和K8s部署的Docker和Helm注册表为企业提供动力。...寻求完全集成的通用容器管理注册表以及最精确的组件智能的组织,可以使用Nexus平台来满足不断增长的容器化和开源治理的需求。
前言 Eureka 作为一个服务注册中心,Eureka Server必然是可以通过集群的方式进行部署,但是分布式系统中一个很关键的点就是数据的一致性,多节点部署的Eureka Server必然涉及到不同节点之间的注册表信息的一致性...Renew }; public static final int DEFAULT_DURATION_IN_SECS = 90; private T holder; //服务实例数据...的操作,使Server集群中的注册表信息保持最终一致性。...", app.getName(), id); return Response.status(Status.NOT_FOUND).build(); } // 是否需要同步数据到发起同步方...,通过同步心跳(续租)的方式,将该服务实例的最新InstanceInfo同步覆盖到peer节点的注册表中,维持Server集群注册表信息的一致性。
当前版本的Aggrokatz允许pypykatz解析LSASS导出文件和注册表项文件,并在无需下载文件或向Beacon上传可疑代码的情况下,从中提取出用户凭证和其他存储的敏感信息。...chunksize:一次读取的最大数据量。 BOF file:BOF文件(Beacon对象文件),这个文件将在每次进行数据块读取的时候上传并在内存中执行。...注册表导出解析菜单参数 SYSTEM file:远程主机中SYSTEM.reg文件的路径位置,你还可以使用UNC路径并通过SMB来访问共享的文件。...SOFTWARE file(可选):远程主机中SOFTWARE.reg文件的路径位置,你还可以使用UNC路径并通过SMB来访问共享的文件。 chunksize:一次读取的最大数据量。...BOF file:BOF文件(Beacon对象文件),这个文件将在每次进行数据块读取的时候上传并在内存中执行。 Output:指定输出格式。
Poweliks只在计算机的注册表里面存储它的组件,所以很难通过普通的防病毒软件进行检测。 ?...Poweliks恶意软件传播方式一般是通过邮件的方式,在邮件里面包含一个恶意的word文档,该文档里面包含了一些恶意的代码,一旦执行恶意代码将在注册表里面加一个隐藏的自启动项目。...Poweliks在注册表里面创建的键值使用非ASCII字符作为键名,防止使用Windows注册表编辑器直接读取。如下图1: ? ? 我们使用注册表编辑器打开之后如下图: ?...可以看到注册表编辑器无法读取非ASCII的键名。...,能够不创建任何文件的情况下完成操作,能够执行注册表中任何一项操作,FB小编未找到Poweliks的源代码,如有同学找到了Poweliks的源码,欢迎发到FB一起研究。
.reg文件使用以及操作 一丶Reg文件 首先这里不讲Winapi等一系列操作注册表的方式,只说一下 reg文件操作的方式 1.reg文件的导入 reg文件是可以双击进行导入的....主要是 注意 /y 是可以不用提示的. 3.regedit导入方式 另外一种方式是使用 regedit导入 regedit /s xxx.reg 使用/s 选项 注意.reg文件. reg有人说后面有多出的...例如 "reg import xxx.reg" 三丶 注册表改名 我们知道,想要对一个key进行改名是没有提供接口的,唯一方法就是删除这个key然后重新设置....如果还想要其它功能强大的函数 那么windbg的x命令可以帮助你 使用方法 typedef struct _UNICODE_STRING { WORD Length; WORD MaximumLength...HKEY hKey,TCHAR *szSubKey,TCHAR *NewKeyFileName) { AdjustPrivileges(TEXT("SE_BACKUP_NAME")); //启动注册表权限
没反应,你得去看安装目录下的帮助文件rrc.chm (图形界面程序是rr64.exe,命令行是rrc64.exe) 这是我试用后的几句示例:这3句就够了,是否区分大小写(casesensitive)以及在键...-413c-bbaa-99a5281a6c90 2、LatencyMon https://resplendence.com/download/LatencyMon.exe 最后,回归到注册表软件的易用性和效率上...其次,图形界面也比较老套,没有Registry Workshop的UI好用。...Registry Workshop官方已经关站了,你只能去找RegistryWorkshop v5.0.1绿色版了,虽然官方不维护了,但这个软件的生命力或者说兼容性是一流的,不论是32位还是64位新的、...旧的Windows PC系统或Server系统,都兼容。
记得那时候2种主题的书特别多,注册表和Bios。现在想想《教你21天玩转Bios》这样的书名都像个笑话儿。 这么说是因为BOIS和注册表对普通用户,基本用不上。...但是注册表其实是Windows系统中非常重要的组件,提供了配置存储、事件监听响应等机制,Windows中很多服务开发都需要依赖注册表。...ID ctime 数据节点创建时的时间 mZxid 数据节点最后一次更新时的事务ID mtime 数据节点最后一次更新时的时间 pZxid 数据节点的子节点列表最后一次被修改...(是子节点列表变更,而不是子节点内容变更)时的事务ID cversion 子节点的版本号 dataVersion 数据节点的版本号 aclVersion 数据节点的ACL版本号 ephemeralOwner...如果节点是临时节点,则表示创建该节点的会话的SessionID;如果节点是持久节点,则该属性值为0 dataLength 数据内容的长度 numChildren 数据节点当前的子节点个数
C#注册表的读,写,删除,查找 using system; using system.collections; using system.configuration; using system.data...{ protected void page_load(object sender, eventargs e) { response.write("这里是读取到的信息...existsregedit(); response.write("查看结束" + ""); } /// /// 注册表的读取...response.write(""); } } /// /// 注册表的写入...catch { return false; } } /// /// 注册表的删除
领取专属 10元无门槛券
手把手带您无忧上云