在具有管理员权限的Vista/7上,regedit和副本的调用以静默方式失败

本文关键字:调用 副本 regedit 失败 方式 静默 管理员 权限 Vista | 更新日期: 2023-09-27 18:29:23

我正在尝试在使用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);
                }

在具有管理员权限的Vista/7上,regedit和副本的调用以静默方式失败

由于运行32位进程和注册表重定向,即在32位注册表视图中进行设置,因此总会出现这样的问题。无声的失败可能实际上是成功的,但设置并没有达到你的预期。

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

复制文件的代码也会以同样的方式与文件系统重定向程序发生冲突。