Не меняется значение реестра [Решено]
Цитата: Komoliddin от 20.11.2020, 19:17Всем доброго времени суток!
есть такой код:private void checkBox1_CheckedChanged(object sender, EventArgs e) { using (RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{35286a68-3c57-41a1-bbb1-0eae73d76c95}\PropertyBag")) { key.SetValue("ThisPCPolicy", checkBox1.Checked ? "Hide" : "Show"); } }но код не работает именно в этом разделе реестра.
Подскажите пожалуйста что делать? Что не так?
Всем доброго времени суток!
есть такой код:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
using (RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{35286a68-3c57-41a1-bbb1-0eae73d76c95}\PropertyBag"))
{
key.SetValue("ThisPCPolicy", checkBox1.Checked ? "Hide" : "Show");
}
}
но код не работает именно в этом разделе реестра.
Подскажите пожалуйста что делать? Что не так?
Цитата: Komoliddin от 20.11.2020, 19:21private void checkBox1_CheckedChanged(object sender, EventArgs e) { using (RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout")) { key.SetValue("EnableAutoLayout", checkBox1.Checked ? 0 : 1); } }тоже самое
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
using (RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout"))
{
key.SetValue("EnableAutoLayout", checkBox1.Checked ? 0 : 1);
}
}
тоже самое
Цитата: Adler от 20.11.2020, 20:16Добрый день.
А права Администратора у программы имеются?
Проверил код из второго сообщения, все работает. Может что-то с правами доступа к ветке реестра делали?
Добрый день.
А права Администратора у программы имеются?
Проверил код из второго сообщения, все работает. Может что-то с правами доступа к ветке реестра делали?
Цитата: Komoliddin от 20.11.2020, 20:19Добрый день.
права Администратор есть через manifest: <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
а как проверят права к реестру? Я могу ручной менять или удалить ключ, а вот через C# не работает
Можно ли получить полный доступ к реестру и принудительно менять значения?
Добрый день.
права Администратор есть через manifest: <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
а как проверят права к реестру? Я могу ручной менять или удалить ключ, а вот через C# не работает
Можно ли получить полный доступ к реестру и принудительно менять значения?
Цитата: Adler от 20.11.2020, 20:28Самый правильный способ через манифест, а проверить, запущенна ли программа с правами администратора или нет можно так:
using System.Security.Principal; WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator); // true - есть права, false - нет правНу есть еще и костыльный способ запроса прав администратора при запуске. Чисто для справки...
Ну а делать проверку прав к реестру наверное самый простой, но вероятно не самый правильный способ банально через обработку исключения.
Например, код из второго сообщения, без прав доступа к реестру при необработанном исключении вывалится в ошибку.
Самый правильный способ через манифест, а проверить, запущенна ли программа с правами администратора или нет можно так:
using System.Security.Principal; WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator); // true - есть права, false - нет прав
Ну есть еще и костыльный способ запроса прав администратора при запуске. Чисто для справки...
Ну а делать проверку прав к реестру наверное самый простой, но вероятно не самый правильный способ банально через обработку исключения.
Например, код из второго сообщения, без прав доступа к реестру при необработанном исключении вывалится в ошибку.
Цитата: Komoliddin от 20.11.2020, 20:37Цитата: Adler от 20.11.2020, 20:28код из второго сообщения, без прав доступа к реестру
а как получить?
Цитата: Adler от 20.11.2020, 20:28код из второго сообщения, без прав доступа к реестру
а как получить?
Цитата: Adler от 20.11.2020, 20:43Цитата: Komoliddin от 20.11.2020, 20:37а как получить?
Права получить? Запустить программу с правами администратора. Если реестр не сломан и там стандартные права доступа, то этого достаточно.
Как именно у вас не работает? Если банально нет прав при выполнении кода, то вылетит исключение, если конечно оно не глушится через try-catch. Если ошибки нет, то код должен сработать.
Цитата: Komoliddin от 20.11.2020, 20:37а как получить?
Права получить? Запустить программу с правами администратора. Если реестр не сломан и там стандартные права доступа, то этого достаточно.
Как именно у вас не работает? Если банально нет прав при выполнении кода, то вылетит исключение, если конечно оно не глушится через try-catch. Если ошибки нет, то код должен сработать.
Цитата: Komoliddin от 20.11.2020, 20:47я не трогал права к реестру вроде реестр не сломан. когда галочку нажимаю тупо нет никакой ошибки, я проверял этот код на свежий установленном системе, там тоже самое...
я не трогал права к реестру вроде реестр не сломан. когда галочку нажимаю тупо нет никакой ошибки, я проверял этот код на свежий установленном системе, там тоже самое...
Цитата: Adler от 20.11.2020, 20:54Возможно глупый вопрос, но все же спрошу: когда проверяете в редакторе реестра изменения, обновляете окно? Или как вы мониторите изменения ключей в реестре?
Возможно глупый вопрос, но все же спрошу: когда проверяете в редакторе реестра изменения, обновляете окно? Или как вы мониторите изменения ключей в реестре?
Цитата: Komoliddin от 20.11.2020, 20:57Цитата: Adler от 20.11.2020, 20:54Возможно глупый вопрос, но все же спрошу: когда проверяете в редакторе реестра изменения, обновляете окно? Или как вы мониторите изменения ключей в реестре?
да конечно, каждый раз нажимаю F5 несколько раз)
[spoiler]
https://i.imgur.com/TltUrOk.png
https://i.imgur.com/YO9gIbF.png
[/spoiler]
Цитата: Adler от 20.11.2020, 20:54Возможно глупый вопрос, но все же спрошу: когда проверяете в редакторе реестра изменения, обновляете окно? Или как вы мониторите изменения ключей в реестре?
да конечно, каждый раз нажимаю F5 несколько раз)
Цитата: Adler от 20.11.2020, 21:031, 2
Код ваш
СТОП. НЕ, не так. Я не заметил, что у вас событие на checkBox1_CheckedChanged, а не на button1_Click
P.S. Тем не менее код и так работает...
1, 2
Код ваш
СТОП. НЕ, не так. Я не заметил, что у вас событие на checkBox1_CheckedChanged, а не на button1_Click
P.S. Тем не менее код и так работает...
Цитата: Komoliddin от 20.11.2020, 21:07я сделал для себя мини твикер, там все настройки через реестр, вот из 100%, 95% работает как положено, а 5% не меняется, права админ есть, UAC выключен через Win10Tweaker, даже не знаю в чем проблема?
я сделал для себя мини твикер, там все настройки через реестр, вот из 100%, 95% работает как положено, а 5% не меняется, права админ есть, UAC выключен через Win10Tweaker, даже не знаю в чем проблема?
Цитата: Adler от 20.11.2020, 21:12Ну я имел в виду, что значение меняется по событию нажатия на кнопку, а не изменению checkBox, но оно и так и так работает...
Ну я имел в виду, что значение меняется по событию нажатия на кнопку, а не изменению checkBox, но оно и так и так работает...