在具有管理员权限的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);
}
由于运行32位进程和注册表重定向,即在32位注册表视图中进行设置,因此总会出现这样的问题。无声的失败可能实际上是成功的,但设置并没有达到你的预期。
我希望您能在HKLM''Software.Wow6432Node下找到您的设置。通过以AnyCPU为目标或使用RegistryView枚举写入64位视图。
复制文件的代码也会以同样的方式与文件系统重定向程序发生冲突。