Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言将注册表值写入本地计算机#_C#_.net - Fatal编程技术网

C# 用C语言将注册表值写入本地计算机#

C# 用C语言将注册表值写入本地计算机#,c#,.net,C#,.net,大家好 我正试图为一个我被要求开发的软件创建一个注册表项,但我遇到了麻烦。我在谷歌上做了多次搜索,但都没能得到相应的修改。在最后一次尝试时,我的代码如下所示: static void Main(string[] args) { RegistryKey Install = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);

大家好

我正试图为一个我被要求开发的软件创建一个注册表项,但我遇到了麻烦。我在谷歌上做了多次搜索,但都没能得到相应的修改。在最后一次尝试时,我的代码如下所示:

static void Main(string[] args)
        {
            RegistryKey Install = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
            //string ToolKit = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run";
            string AtStart = "ValueName";
            string Value = @"C:\Program Files\SystemFolder\ToolFolder\Toolname.exe";

            if (Install.GetValue(AtStart, Value).ToString() == null)
            {
                Install.SetValue(AtStart, @"C:\Program Files\SystemFolder\ToolFolder\Toolname.exe", RegistryValueKind.String);
                //Registry.SetValue(ToolKit, AtStart, @"C:\Program Files\SystemFolder\ToolFolder\Toolname.exe");
            }
            else
            {
                Install.SetValue(AtStart, @"C:\Program Files\SystemFolder\ToolFolder\Toolname.exe", RegistryValueKind.String);
            }
        }
上面的代码运行时不会发生意外。但是,该值从未在注册表的“Run”子项下实现。我还尝试使用“Registry.SetValue(…)”进行更改,正如您在上面看到的那样。在此问题上的任何帮助都将不胜感激。如果需要任何其他信息,请告诉我,我会在下面列出我能想到的所有重要事情

基本信息:

  • 该程序构建为一个控制台应用程序
  • app.manifest设置为“requireAdministrator”
  • 存在“使用Microsoft.Win32”
  • 目标框架是.NET4.5
  • 在win 7和win 10上使用,结果相同

  • 扩展@steve comment。 启用32位和64位应用程序访问 WOW64 emulator以统一的方式在注册表的某些部分提供了一种称为注册表重定向的功能。它主要维护注册表项的单独逻辑视图,该注册表项映射到Wow6432Node下的物理位置。 并非所有注册表项都受影响,您可以在此处找到受影响的项:


    您的目标应用程序是x86还是AnyCPU?在64位系统上的x86中,您可能会遇到注册表重定向情况。在WoW6432Note\Microsoft\Windows\currentVersion下检查好了,现在我觉得自己很愚蠢。我能够在WOW6432节点集中找到它。我感谢你指出这一点。