Мой код может правильно получить доступ и установить значение для включения оконных «подсказок», но я не могу отключить его по какой-то причине. Я должен отметить, что инструмент уже запущен от имени администратора, и нет никаких других процессов или кода, которые могут этому противодействовать.
// For no reason I can find, this one doesn't work
private void NoIdontWantEdgeNowOrEver()
{
using (RegistryKey hku = RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Registry64))
{
RegistryKey subKey = hku.CreateSubKey(loggedInSIDStr + @"\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager",true);
subKey.SetValue("SubscribedContent-338382Enabled", 0, RegistryValueKind.DWord);
}
}
// This one works fine.
private void ILikeNaggingHurtMeWindows()
{
using (RegistryKey hku = RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Registry64))
{
RegistryKey subKey = hku.CreateSubKey(loggedInSIDStr + @"\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager",true);
subKey.SetValue("SubscribedContent-338382Enabled", 1, RegistryValueKind.DWord);
}
}
Если улья пользователей не существует, у нас гораздо большие проблемы :)
Createsubkey открывает ключ, если он существует, и создает его, если нет, поэтому он всегда будет возвращать допустимое значение.
Код на 100% правильный, но у меня была опечатка в переключателе, который вызывал функцию отключения, поэтому он никогда не выполнялся. Дело было не в волшебном ключе реестра, как я изначально думал.
Кажется, вы предполагаете, что CreateSubKey() всегда возвращает правильный результат. У меня нет под рукой Windows API, но безопасно ли это? Кстати, то же самое касается OpenBaseKey().