【问题标题】:Call of regedit and copies silently fail on Vista/7 with admin privileges?在具有管理员权限的 Vista/7 上调用 regedit 和副本静默失败?
【发布时间】:2012-03-27 22:55:34
【问题描述】:

我正在尝试使用 C# 在机器上设置支持信息。我有一个要导入的注册表文件(我也尝试过使用 Microsoft.Win32,下面的代码已注释了进程调用)和两个要复制到 system32 中的文件。这些文件位于共享上,并且代码的其他部分与共享正确交互。第一个代码,所以我可能会离开这里

try
                {
                    //String pathtooemreg = Environment.ExpandEnvironmentVariables(@"%HOMEDRIVE%\Windows\System32\oeminfo.reg");
                    //System.IO.File.Copy(@"\\files\tools\oeminfo.reg", (pathtooemreg), true);
                    //Process p = new Process();
                    //p.StartInfo.FileName = @"regedit";
                    //p.StartInfo.Arguments = " /s" + (pathtooemreg);
                    //p.StartInfo.UseShellExecute = true;
                    //p.StartInfo.CreateNoWindow = true;
                    //p.EnableRaisingEvents = true;
                    //p.Start();
                    //p.WaitForExit();
                    Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation", "Model", "");
                    Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation", "Manufacturer", "somecompanyname");
                    Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation", "Logo", "oemlogo.bmp");
                    Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation", "SupportPhone", "somephonenumber");
                    Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation", "SupportURL", "someurl");
                    Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation", "SupportHours", "");
                    String pathtooeminfo = Environment.ExpandEnvironmentVariables(@"%HOMEDRIVE%\Windows\System32\oeminfo.ini");             
                    System.IO.File.Copy(@"\\files\tools\oeminfo.ini", (pathtooeminfo), true);
                    String pathtooemlogo = Environment.ExpandEnvironmentVariables(@"%HOMEDRIVE%\Windows\System32\oemlogo.bmp");
                    System.IO.File.Copy(@"\\files\tools\oemlogo.bmp", (pathtooemlogo), true);
                    listBox1.Items.Add(@"3b.Done Installing OEM/Support info.");
                }
                catch (Exception err)
                {
                    MessageBox.Show(this, "Error: " + err.Message);
                }

【问题讨论】:

    标签: c# registry administrator


    【解决方案1】:

    由于您运行 32 位进程和注册表重定向,这些问题总是会出现,这意味着设置是在 32 位注册表视图中进行的。无声的失败可能实际上是成功,但设置并没有按照您的预期进行。

    我希望您会在 HKLM\Software.Wow6432Node 下找到您的设置。通过以 AnyCPU 为目标或使用 RegistryView 枚举写入 64 位视图。

    复制文件的代码将以几乎相同的方式与文件系统重定向器发生冲突。

    【讨论】:

      猜你喜欢
      • 2010-10-12
      • 2011-09-03
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多