Лучший отвечающий
Приложение запускается только у меня и ни у кого больше, странное поведение.

Вопрос
-
Добрый день, задача реализовать маленькую утилиту которая будет выводить на раб стол версию ОС, вкл/откл Active Desktop, вкл/откл всплывающие подсказки.
Я реализовал что при запуске чекбоксы наполняются в зависимости от значений соответствующих параметров ключей реестра. Если параметра нет, утилита его создаст со значением по умолчанию. У меня приложение работает без ошибок и запускается, но как только пытаюсь запустить на какой нибудь другой машине оно(приложение) не запускается (процесс появляется и через секунд 5 потухает) ничего при это не появляется.
Ниже приложил код, посмотрите в чем проблема почему она запускается только у меня.?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Microsoft.Win32; using AReboot; namespace OneUnit { public partial class Form1 : Form { public Form1() { InitializeComponent(); using (var key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop")) { if (key == null) { //Создать нужный ключ реестра RegistryKey createKey = Registry.CurrentUser; createKey.CreateSubKey(@"Control Panel\Desktop"); createKey = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true); createKey.SetValue("PaintDesktopVersion", 0); } var currentKey = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop"); var value = currentKey.GetValue("PaintDesktopVersion"); string control = "1"; if (value.ToString() == control) { checkBox1.Checked = true; } else { checkBox1.Checked = false; } } using (var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer")) { if (key == null) { //Создать нужный ключ реестра RegistryKey createKey = Registry.CurrentUser; createKey.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"); createKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer",true); createKey.SetValue("ForceActiveDesktopOn", 0); } var currentKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"); var value = currentKey.GetValue("ForceActiveDesktopOn"); string control = "0"; if (value.ToString() == control) { checkBox2.Checked = true; } else { checkBox2.Checked = false; } } using (var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced")) { if (key == null) { //Создать нужный ключ реестра RegistryKey createKey = Registry.CurrentUser; createKey.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"); createKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", true); createKey.SetValue("ShowInfoTip", 1); } var currentKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"); var value = currentKey.GetValue("ShowInfoTip"); string control = "0"; if (value.ToString() == control) { checkBox3.Checked = true; } else { checkBox3.Checked = false; } } } private bool flagExit = false; public bool ValueExit { get { return flagExit; } set { flagExit = value; } } public void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (flagExit == true) { e.Cancel = false; Application.Exit(); } else { e.Cancel = true; this.Hide(); } } private void toolStripMenuItem1_Click(object sender, EventArgs e) { this.Show(); } private void toolStripMenuItem2_Click(object sender, EventArgs e) { flagExit = true; Application.Exit(); } private void button1_Click(object sender, EventArgs e) { if (checkBox1.Checked == true) { Function.ChangeWinLogo(true); } else { Function.ChangeWinLogo(false); } if (checkBox2.Checked == true) { Function.ChangeActiveDesk(true); } else { Function.ChangeActiveDesk(false); } if (checkBox3.Checked == true) { Function.ChangeShowTips(true); } else { Function.ChangeShowTips(false); } var resultDialog = MessageBox.Show("Изменения вступят в силу после перезагрузки. Перезагрузить компьютер?", "OneUnit", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (resultDialog == System.Windows.Forms.DialogResult.Yes) { reboot.halt(true, false); } } } }
17 октября 2012 г. 10:47
Ответы
-
Вы правы, при создании ключа параметр RegistryKey.OpenSubKey Method (String, Boolean), параметр writable не указал true после чего не мог записать в него значение. Проблема решена.
Всем большое спасибо :)- Помечено в качестве ответа Abolmasov Dmitry 18 октября 2012 г. 13:46
18 октября 2012 г. 13:42
Все ответы
-
Посмотрите в эвент лог, проверьте, что там нет дополнительных сведений о краше.
Проверьте, что версия дот нета на машине установлена нужная.
Добавьте в код try-catch, чтобы убедиться, что это проблема в коде, а не в машине.
17 октября 2012 г. 11:01Отвечающий -
Антон, добавил в код try-catch при запуске появилось такое исключение:
при создании параметра ForceActiveDesktopOn. Но в реестре он создался. Программа продолжила работу. При повторном запуске все прошло гладко и исключение не генерировалось.
Все таки я не понял почему генерируется исключение.
17 октября 2012 г. 18:58 -
Прав не хватает? Может от имени администратора нужно попробовать запустить.18 октября 2012 г. 4:30Модератор
-
Привет.
Вы у себя на XP запускаете? Посмотрите в коде строку 65 что там за запись в реестр и в какую ветку. Вот у того пользователя от которого вы запускаете программу должны быть права на эту ветку реестра. Либо в программе добавиться требования запуска от администратора, как сказал ulcer. Это должно решить проблему.
Для связи [mail]
18 октября 2012 г. 8:15 -
Зайдите через regedit в нужную ветку, и в контекстном меню выберите свойство Permissions, для текущего юзера будет разрешено только чтение.
Для связи [mail]
18 октября 2012 г. 8:21 -
Вы правы, при создании ключа параметр RegistryKey.OpenSubKey Method (String, Boolean), параметр writable не указал true после чего не мог записать в него значение. Проблема решена.
Всем большое спасибо :)- Помечено в качестве ответа Abolmasov Dmitry 18 октября 2012 г. 13:46
18 октября 2012 г. 13:42