Вызов regedit и копий молча проваливаются на Vista / 7 с правами администратора? - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь установить информацию поддержки на машинах с 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);
                }

1 Ответ

2 голосов
/ 28 марта 2012

Такие вопросы неизбежно возникают из-за того, что вы запускаете 32-битный процесс и перенаправление реестра, что означает, что настройки выполняются в 32-битном представлении реестра.Бесшумный сбой, вероятно, на самом деле успешен, но настройки выполняются не там, где вы ожидаете.

Я ожидаю, что вы найдете свои настройки в HKLM \ Software.Wow6432Node.Записывайте в 64-битное представление либо с помощью AnyCPU, либо с помощью перечисления RegistryView.

Код, который копирует файлы, практически не попадет в перенаправитель файловой системы.

...