标签: registrykey

具有路径的神秘的本机"A"注册表项:Registry\A.

我最近为Windows编写了一个原生的NT注册表编辑器,并在Windows 7上运行它.令我惊讶的是,除了Windows XP上存在的两个标准根键MACHINE和USER之外,还有一个名为" "无法以任何方式打开的",无论是通过权限更改还是备份权限或其他方式:

快照

有谁知道这个键的用途是什么?我不相信它适用于任何软件,因为在我在机器上安装任何东西之前它就在那里,我相信我在另一个新装置上看到了它.这是相当非常可疑的,我很好奇为什么它在那里.(如果我很好奇,我可能会在没有特权检查的情况下写一个驱动程序打开它,看看会发生什么!)

(我不确定是否将它放在SuperUser或StackOverflow上,因为我认为它可能会进入任何一个.但我可能错了;抱歉,如果这不是合适的地方.)

编辑:

如果忘了说,我不相信你甚至可以使用Win32 API看到这个密钥,比如RegOpenKey- 你必须使用原生API NtEnumerateKey.

windows registry windows-7 registrykey

7
推荐指数
1
解决办法
1311
查看次数

为什么RegQueryValueEx()函数在尝试从注册表项读取时返回ERROR_FILE_NOT_FOUND?

系统:Windows 7 32位
语言:C++

我试图访问寄存器HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\Scsi\\Scsi Port 0,密钥Driver(类型REG_SZ) - 没问题.

例如,对于读取来说HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM,所有键(类型REG_SZ)都有斜线\Device\Serial0.

在读取这些键时,它总是返回2(没有这样的文件),并带有以下示例代码:

HKEY hKey = 0;
DWORD dwType = REG_SZ;
char buf[255] = {0};
DWORD dwBufSize = sizeof(buf);

if( RegOpenKeyEx( HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_QUERY_VALUE, &hKey ) == ERROR_SUCCESS ) 
{
  auto ret = RegQueryValueEx( hKey, TEXT("\Device\Serial0"), 0, &dwType, (LPBYTE)buf, &dwBufSize );
  // ret always == 2 for key with slashes
--- CUT ---
Run Code Online (Sandbox Code Playgroud)

使用名称中的斜杠读取键值的正确方法是什么?


Cody Gray已正确回答了上述问题.
另一个问题.


我在使用变量而不是文本字符串时遇到了同样的问题.
我认为这两种方法都有单斜杠和双斜杠: …

c++ windows registry registrykey

7
推荐指数
1
解决办法
3万
查看次数

derefencing null后FORWARD_NULL?

我有这行代码:

this.Path = pathLookUpLocation.GetValue(RegLookupKey, null).ToString();
Run Code Online (Sandbox Code Playgroud)

当我在我的代码上运行静态分析工具(Coverity)时,我在这里得到一个FORWARD_NULL,说我在这里取消引用null.我无法理解这意味着什么以及如何修复它?

this.Path是一个字符串,pathLookUpLocation是一个RegistryKey,RegLookupKey是一个字符串.

c# static-analysis registrykey

7
推荐指数
1
解决办法
3590
查看次数

如何忽略远程桌面连接上的证书警告

我试图忽略远程桌面连接上的证书警告 - 图像中的一个:

在此输入图像描述

到目前为止,我发现当我选中"不再询问"复选框时,它会生成注册表项:

HKCU:\ Software\Microsoft\Terminal Server Client\Servers

将生成一个新记录,其中包含服务器名称和密钥名称CertHash,其中包含特定于计算机的值.机器的关键是相同的 - 如果我删除它并选中复选框,则会再次生成相同的值.如果我重新创建虚拟机,则会有一个新值,因此我认为它是特定于机器的.

有人能告诉我这个哈希是如何生成的,所以我可以从命令行填充密钥?添加证书不是一个选项,机器将经常重新生成,所以我需要一个选项来自动忽略它,因为我需要将用户连接到机器并在其中运行一些程序.

ssl remote-desktop windows-server-2008 registrykey

7
推荐指数
2
解决办法
3万
查看次数

我添加了一个注册表项,但我无法以编程方式找到它

所以我使用RegEdit将以下内容添加到我的工作站上的注册表中:

HKLM\SOFTWARE \富\酒吧

Bar有一对k/v对"wtf"/"idk".我通过关闭注册表并重新打开它来验证这些更改是"采取"的.嘿,他们还在那里!胀.

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar");

if (key != null)
{
    var = key.GetValue("wtf").ToString();
}
Run Code Online (Sandbox Code Playgroud)

问题是,key为null.

什么时候...

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames()
Run Code Online (Sandbox Code Playgroud)

被称为,Foo不会出现在众多的SubKeyNames中.

所以,我显然错过了一些愚蠢的东西.具体到底我错过了什么?

c# registry registrykey

6
推荐指数
2
解决办法
4600
查看次数

访问HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

谁能告诉我为什么我无法访问注册表项"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData"

如果我查询GetSubKeysNames"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer"它只返回一个值的存在"Secure"---->在哪里是所有其他子项?

谢谢.

c# registry registrykey

6
推荐指数
1
解决办法
4290
查看次数

通过 C# 从注册表中的“UserChoice”项中删除“拒绝”规则(权限)

我正在研究文件关联。我已经确定有一个名为UserChoice以下的密钥:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[ext].
Run Code Online (Sandbox Code Playgroud)

UserChoice只要创建了该密钥并且Windows尚未创建该密钥,我就能够读取和写入该密钥。但是,如果Windows已经UserChoice创建了该密钥,那么我需要以管理员身份运行才能访问该密钥。我的最终目标是删除密钥。UserChoice

我注意到 Windows在该密钥上放置了拒绝UserChoice规则,这阻止了我删除该密钥。如果我能成功删除该规则,我相信我将能够删除该UserChoice密钥。这是我尝试过的代码:

public static void ShowSecurity(RegistryKey regKeyRoot, string user) {
    RegistrySecurity security = regKeyRoot.GetAccessControl(AccessControlSections.All);

    foreach (RegistryAccessRule ar in
        security.GetAccessRules(true, true, typeof(NTAccount))) {

        if (ar.IdentityReference.Value.Contains(User) &&
                ar.AccessControlType.ToString().ToLower() == "deny") {

            security.RemoveAccessRuleSpecific(ar);
            regKeyRoot.SetAccessControl(security);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当 Windows 创建UserChoice密钥时,它会为当前用户添加一条 Type Deny 的安全规则;许可:特殊。该规则不被继承,UserChoice仅适用于密钥。

通过一些混乱并以管理员身份运行,我可以访问它RegistryAccessRule。然而,即使以管理员身份运行,我也无法删除此规则。我在我的研究中读到过,没有一种程序化的方法可以做到这一点。我可以通过 RegEdit 删除此规则。我还可以UserChoice使用 NirSoft 的文件类型管理器删除密钥。所以我认为有某种方法可以做到这一点。

摘要:有没有一种方法可以删除拒绝规则,以便我可以删除密钥UserChoice …

c# security registry registrykey

5
推荐指数
1
解决办法
2743
查看次数

错误:System.IO.IOException:找不到网络路径

当我执行以下代码时会导致错误,请帮我解决此问题.

 class MySample
{

    public static void Main()
    {


string eventLogName = "Security";

string sourceName = "BTHUSB";

string machineName = "v.i.com";

EventLog eventLog;

eventLog = new EventLog();

eventLog.Log = eventLogName;

eventLog.Source = sourceName;

eventLog.MachineName = machineName;
foreach (EventLogEntry log in eventLog.Entries.Cast<EventLogEntry>().Reverse())// Entries.Cast<EventLogEntry>().Reverse
{
 Console.WriteLine(") Entry type: {0} , Category: {1},  Data: {2}, ID: {3}, Source: {4} \n", log.EntryType, log.TimeWritten, log.EventID, log.InstanceId, log.Source);
}
}
}
Run Code Online (Sandbox Code Playgroud)

错误是,

  Unhandled Exception: System.IO.IOException: The network path was not found.

  at Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode, String str) …
Run Code Online (Sandbox Code Playgroud)

c# wmi remote-access registrykey

5
推荐指数
2
解决办法
2万
查看次数

使用VB.NET检查Windows注册表中是否存在密钥

在VB.NET中,我可以在Windows注册表中创建一个键,如下所示:

My.Computer.Registry.CurrentUser.CreateSubKey("TestKey")
Run Code Online (Sandbox Code Playgroud)

我可以检查一个键中是否存在这样的:

If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\MyKey", _
        "TestValue", Nothing) Is Nothing Then
    MsgBox("Value does not exist.")
Else
    MsgBox("Value exist.")
End If
Run Code Online (Sandbox Code Playgroud)

但是,如何检查注册表中是否存在具有特定名称的密钥

vb.net windows registry key-value registrykey

5
推荐指数
1
解决办法
1万
查看次数

如何在Powershell中为其他用户更改特定的注册表设置

目标:

Powershell中为特定用户而不是其他用户编辑特定注册表项设置

已知:

操作系统:Windows 8.1 Embedded Industry Pro(与Win 8.1相同,但具有一些嵌入式功能)

我可以在目标计算机上手动完成此操作,方法是打开REGEDIT,选择HKU,然后单击“文件”菜单,再单击“加载Hive”,导航到用户的配置文件目录,例如:c:\ users \ MrEd,并在出现提示时键入“ ntuser” .dat'-导入HKEY_CURRENT_USER。Hive将被加载到HKU中,您可以在其中导航并进行必要的修改。

摘要:

我有一个Powershell脚本,该脚本返回特定用户的SID,但是在注册表配置单元的上下文中使用时,配置单元“未找到”-因此,我想我必须缺少一个步骤吗?如何从Powershell中“加载配置单元”?还是我在某处缺少特殊的,神奇的,键盘上的山羊胡咒?

Param(
    [string]$user= $null
)


Function GetSIDfromAcctName()
{
    Param(
        [Parameter(mandatory=$true)]$userName
    )
    $myacct = Get-WmiObject Win32_UserAccount -filter "Name='$userName'" 
    return $myacct.sid
}

if($user)
{
    $sid = GetSIDfromAcctName $user
    New-PSDrive HKU Registry HKEY_USERS
    $myHiveEntry = Get-Item "HKU:\${sid}"
    Write-Host "Key:[$myHiveEntry]"
}
Run Code Online (Sandbox Code Playgroud)

windows powershell registrykey

5
推荐指数
1
解决办法
3142
查看次数