首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当字符串存在时,C# WMI注册表GetStringValue返回null

C#中的WMI注册表GetStringValue方法是用于获取注册表中指定路径下键值对的字符串值。当使用该方法获取注册表中存在的键值对时,应该返回对应的字符串值。然而,当使用该方法获取不存在的键值对时,它会返回null。

这种情况下,返回null可能有以下几种原因:

  1. 键值对不存在:当指定路径下的键值对不存在时,GetStringValue方法会返回null。这可能是由于路径错误或者该键值对尚未被创建。
  2. 访问权限不足:某些注册表路径可能需要管理员权限才能访问。如果当前用户没有足够的权限,GetStringValue方法可能返回null。在这种情况下,应该检查当前用户的权限,并确保具备足够的权限来访问注册表。

总结起来,当字符串存在时,C# WMI注册表GetStringValue返回null的可能原因是键值对不存在或当前用户权限不足。在解决此问题时,需要确保访问的路径正确,键值对存在,并且具备足够的权限来访问注册表。

相关链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WMI 攻击手法研究 – 与 windows 注册表交互 (第三部分)

文章目录[隐藏] 1 Windows 注册表是什么 2 注册表 & WMI 2.1 查询注册表 2.2 修改注册表 3 工具 4 结论 这是 WMI 攻击手法研究系列第三篇,本文将重点介绍与 Windows...下表将常见数据类型与它们的方法的对应关系: Method Data Type Type Value Function GetStringValue REG_SZ 1 返回一个字符串 GetExpandedStringValue...位的数值 GetMultiStringValue REG_MULTI_SZ 7 返回多个字符串值 GetQWORDValue REG_QWORD 11 返回一个 64 位的数值 2.1 查询注册表...这在探索注册表中的未知嵌套项很有帮助。...4 结论 在收集有用数据注册表是攻击者的宝库。此外,注册表还可用于存储 Payload,作为理想的无文件攻击和持久性机制。

1.1K20

三十二.Python攻防之获取Windows主机信息、注册表、U盘痕迹和回收站(1)

C#中对注册表进行操作,需要引用命名空间using Microsoft.Win32。 RegistryKey类:表示注册表中的顶级结点,此类是注册表的封装。...我们在实际程序中常用这种数据类型,如果要保存布尔值,将它表示成0或1。 REG_BINARY:用于存储二进制数据。 REGEXPANDSZ:可扩展的字符串值,可以保存在运行时才解析的系统变量。...REGMULTISZ:以数组的格式保存多个文本字符串,每个字符串"元素"都以null字符结束。 ---- 2.注册表基本操作 Python注册表操作主要调用winreg扩展包。...运行结果如下: ---- (2) 检索键值操作 winreg.QueryInfoKey(key) 以元组形式返回键的信息 winreg.QueryValue(key, sub_key) 以字符串形式检索键的未命名值...在Windows系统中,一个USB移动存储设备插入时,就会在注册表中留下痕迹。

1.4K10
  • 一.获取Windows主机信息、注册表、U盘历史痕迹和回收站文件

    C#中对注册表进行操作,需要引用命名空间using Microsoft.Win32。 RegistryKey类:表示注册表中的顶级结点,此类是注册表的封装。...我们在实际程序中常用这种数据类型,如果要保存布尔值,将它表示成0或1。 REG_BINARY:用于存储二进制数据。 REGEXPANDSZ:可扩展的字符串值,可以保存在运行时才解析的系统变量。...REGMULTISZ:以数组的格式保存多个文本字符串,每个字符串"元素"都以null字符结束。 ---- 2.注册表基本操作 Python注册表操作主要调用winreg扩展包。...运行结果如下: ---- (2) 检索键值操作 winreg.QueryInfoKey(key) 以元组形式返回键的信息 winreg.QueryValue(key, sub_key) 以字符串形式检索键的未命名值...在Windows系统中,一个USB移动存储设备插入时,就会在注册表中留下痕迹。

    2.5K20

    内网横向移动执行命令方法之 wmic 利用总结

    直接使用系统自带的 WMIC 进行连接,执行命令是无回显的,常常需要将执行的返回结果写入文件,再通过文件读取的方式将回显带回来。...提供了通过 wmi 执行命令并回显的功能。其原理较为简单:通过 wmi 执行命令,并将执行结果保存文件,通过 smb 读取返回结果。...其原理是通过命令执行将执行结果写入注册表之中,再通过 WMI注册表进行操作,读取结果,这样一来就不需要 445 端口了。如下是 WMICMD 通过注册表获取执行结果回显的代码片段。...如下是 WMIHACKER中AddSCHTASKWithres 函数的部分代码,可以看到,通过字符串的拼接组装构成了一个脚本代码,再利用了 ActiveScriptEventConsumer 在特定情况下会执行该脚本...如下代码,是使用C#编写的一个后门 Demo,可以实现在固定间隔时间后执行特定程序,且由于WMI后门的特性,重启后仍然还在,比较隐蔽。

    4.4K10

    渗透测试与开发技巧

    通过c#编写dll & 通过rundll32.exe或者regsvr32加载dll 默认情况下,c#不可以声明导出函数,但可通过添加UnmanagedExports实现 当然,通过c#编写的dll,dll...,存在重定向 对注册表操作: 访问HKLM\Software\的实际路径为HKLM\Software\Wow6432Node\ 对文件操作: 访问c:\windows\Sysnative\ 的实际路径为...', $null,$null) $StaticClass.Name = 'Win32_Command' $StaticClass.Put() $StaticClass.Properties.Add('Command..."any" protocol=TCP dir=in localport=any action=allow 参考: 《域渗透——利用DCOM在远程系统执行程序》 ---- Tips 47 劫持UAC 弹出...NULL,非锁屏状态下GetForegroundWindow()的函数返回值为一个非零的值 参考: https://stackoverflow.com/questions/9563549/what-happens-behind-the-windows-lock-screen

    4.5K20

    绕过杀软!SQL Server Transact-SQL 的无文件攻击姿势

    排查注册表启动项,存在一个BGClients,执行c:\windows\system32\wbem\123.bat,看起来十分可疑: ?...启动项、注册表WMI、进程、服务、计划任务都找了一圈,再没发现其他问题,于是把以上发现的问题项统统删除,结案! 那是不可能的。 cab.exe又出现了。 而且手动删掉的一堆乱七八糟全都回来了。...可以看到,上一次排查发现的恶意文件、WMI注册表等项都可以在表格中找到生成语句,并且还有一些没有排查到的文件,可能被防病毒软件识别清除了。...病毒文件分析 将十六进制数据拷贝出来转换为PE文件,是一个用C#编写的DLL文件,通过MyDownloadFile方法读取指定URL网页的内容: ?...解决方案 1.删除SQL Server中的恶意作业和存储过程; 2.删除主机中存在的恶意程序、WMI注册表项等,详见下表: ? 3.

    1.1K10

    WMI持久性后门(powershell)(水文)

    1.2.2.CommandLineEventConsumer 一个事件被传递给它,在本地系统上下文中启动一个任意进程。此适用于 Windows XP 及更高版本。...1.2.3.LogFileEventConsumer 当事件发送到文本日志文件,将自定义字符串写入文本日志文件。此适用于 Windows XP 及更高版本。...,管理员[administrator]正常登录,稍等片刻2016可能要稍微多等会儿]系统在后台轮询到我们的payload事件后,便会被触发执行。...事件过滤器和两个 WMI事件Consumer,Consumer启动 base64 编码的 PowerShell 命令的命令行,然后加载存储在 Windows 注册表中的大型 PowerShell 脚本。...$WY79ad')) | iex 最后,脚本将加密的有效负载存储在 Windows 注册表中,在样本中,攻击者似乎对每个目标使用不同的注册表位置。

    1.3K10

    WMI技术介绍和应用——事件通知

    需要注意的一点是,并不是所有的Provider都可以为我们提供事件通知——只有WMI Event Class的托管对象才会在事件发生给我们提供通知。...在《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中,我们讲解WMI查询静态数据,我们可以使用同步查询和半同步查询两种查询方式。...像静态数据,正如其名,它是静态的,即它存在存在,不存在即不存在,所以我们可以使用同步方式查询。半同步其实就是一个伪装的异步操作,我们在那篇文章中已经做了介绍,本文不再赘述。...一个事件发生,并命中过滤器,WMI将加载永久事件使用者并通知它某事件发生了。或许你会有点好奇,永久事件使用者是保存在什么地方?WMI又是如何找到它的?...这些事件都是由事件提供者(An event provider)发送给WMI的。它也是个COM组件。我们可以使用C++或者C#编写事件提供者程序。大部分事件提供者管理着一个WMI对象。

    1.2K20

    C#注册表情缘

    记得当时刚接触C#的时候,喜欢编写各种小软件,而注册表系列和网络系列被当时的我认为大牛的必备技能。直到我研究注册表前一天我都感觉他是那么的高深。...简单记一下,饭后娱乐 完整Demo研究:https://github.com/dunitian/LoTCodeBase/tree/master/NetCode/0.知识拓展/02.注册表系 这个是一些常用的方法和属性...// GetValueNames() 检索包含与此项关联的所有值名称的字符串数组 // GetValue(string name) 获取指定名称,不存在名称/值对,则返回 null // CreateSubKey...// DeleteSubKey(string subkey,bool b) 删除子项,b为false则子项不存在不抛异常 // DeleteValue(string name,bool b) 删除指定的键值...,b为false则子项不存在不抛异常 先举个简单的案例: ?

    1.1K90

    Vbs脚本编程简明教程

    Vbs中修改注册表的语句主要有: 1、读注册表的关键词和值: 可以通过把关键词的完整路径传递给wshshell对象的regread方法。...第四部分:定时存盘的关键,通过“While……Wend”这个条件为“真”循环命令,实现自动存盘代码“WshShell.SendKeys "^s"”和定时代码“WScript.Sleep AutoSaveTime...因为不能让这个定时存盘循环一直执行,退出记事本后,必须自动退出脚本并结束循环,所以设计了一个循环判断条件“WshShell.AppActivate TXTFileName=True”,记事本运行中,...InStr 函数:返回一个字符串在另一个字符串中首次出现的位置。 InStrRev 函数;返回一个字符串在另一个字符串中出现的位置,但是从字符串的尾部算起。 Int 函数:返回数的整数部分。...IsEmpty 函数:返回 Boolean 值,反映变量是否已被初始化。 IsNull 函数:返回 Boolean 值,反映表达式是否含有无效数据(Null)。

    10K52

    权限维持方法小结

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager 上述注册表下有一个名为BootExecute的多字符串值键,它的默认值是...标识,也就是说CLSID就是对象的***号,而一个应用程序想要调用某个对象,也是通过CLSID来寻找对象的。...COM对象MruPidlList,作用于shell32.dll,shell32.dll用于打开网页和文件,所以系统启动必定会执行,于是后门也就会主动启动,相当于一个主动后门。...计算机加入域中,MSDTC服务启动,会搜索注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI 分别加载3个DLL:oci.dll,SQLLib80...x标志位s(set uid简称suid),且所属主为root执行该文件,其实是以root身份执行的。

    3.3K10

    OFFENSIVE LATERAL MOVEMENT 横向移动(译文)

    渗透测试人员和红队通过通过执行powershell.exe在远程主机上面运行经过base64编码的命令来完成横向移动,然后返回到目标的会话。...Network Logon (Type 3):帐户对远程系统/服务进行身份验证,将发生网络登录。在网络身份验证期间,可重用凭据不会发送到远程系统。...\System32\calc.exe” Cobalt Strike利用WMI在目标上执行Powershell的payload,因此使用内置WMIPowerShell.exe将打开,这是OpSec问题,...,即使启动了WinRM服务,也必须存在一个侦听器,以便其处理请求。...发生网络登录(类型3),会出现双跳问题,这意味着凭据实际上从未发送到远程主机。由于凭据没有发送到远程主机,因此远程主机无法向有效负载托管服务器进行身份验证。

    4.1K10

    详解反虚拟机技术

    这种方法存在一个缺陷,由于IDT的值只针对处于正在运行的处理器而言,在单CPU中它是个常量,但它处于多CPU就可能会受到影响了,因为每个CPU都有其自己的IDT,这样问题就自然而然的产生了。...如代码所示setz指令在magic数与VMXh匹配设置返回值rc为1,如果在真实的机器上运行会触发EXCEPTION_EXECUTE_HANDLER异常,在异常处理中设置返回值rc为0。...遇到无效指令(不存在于ISA中),机器引发无效操作码异常。软件可以处理异常(使用通常的try/catch机制),也可以让操作系统处理异常,或者在最坏的情况下崩溃机器。...VirtualPC的虚拟机想要与VirtualPC通信,程序设置异常处理程序(try/catch块),在调用VM软件之前设置所需的参数,发出特殊的无效操作码指令。...VM软件将识别此无效操作码并相应地操作,如果VirtualPC存在则不引起异常,并且如果VirtualPC不存在则产生异常。最后,程序的catch块将处理异常并检查返回的VM软件的参数。

    1.3K41

    反虚拟机技术总结

    / Object path of WMI namespace NULL, // User name....这种方法存在一个缺陷,由于IDT的值只针对处于正在运行的处理器而言,在单CPU中它是个常量,但它处于多CPU就可能会受到影响了,因为每个CPU都有其自己的IDT,这样问题就自然而然的产生了。...遇到无效指令(不存在于ISA中),机器引发无效操作码异常。软件可以处理异常(使用通常的try/catch机制),也可以让操作系统处理异常,或者在最坏的情况下崩溃机器。...VM软件将识别此无效操作码并相应地操作,如果VirtualPC存在则不引起异常,并且如果VirtualPC不存在则产生异常。 最后,程序的catch块将处理异常并检查返回的VM软件的参数。...然而,该恶意软件植入到新创建的虚拟机和word环境中后,总是状况不断,不能正常运行。每次测试手动打开一两次,总是出现程序异常。

    65050
    领券