Tengo que probar una clave, establecer una clave, y claro una clave y en todos los casos, la ruta de acceso completa y los valores de la clave en realidad no podría existir. Yo pensaba que los comandos daría cuenta de que por devolver false si parte de la ruta no existe en el cheque y la creación de la ruta de acceso en el set si no existiera, pero que parece no ser el caso.
internal bool DownloadGroupByOff()
{
using (RegistryKey hku = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{
using (RegistryKey explore = hku.OpenSubKey(@"Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell\{885A186E-A440-4ADA-812B-DB871B942259}"))
{
if (GetValueInt(explore,"GroupView") == 0)
return true;
}
}
return false;
}
public void DownloadGroupByEnable()
{
using (RegistryKey hku = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{
using (RegistryKey explore = hku.OpenSubKey(@"Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell\{885A186E-A440-4ADA-812B-DB871B942259}", true))
{
explore.DeleteValue("GroupView");
explore.DeleteValue("Mode");
}
}
}
public void DownloadGroupByDisable()
{
using (RegistryKey hku = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{
using (RegistryKey explore = hku.OpenSubKey(@"Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell\{885A186E-A440-4ADA-812B-DB871B942259}", true))
{
explore.SetValue("", "Downloads");
explore.SetValue("GroupView", "0");
explore.SetValue("Mode", "4");
}
}
}
Lo que me gustaría saber es la forma más limpia para manejar este problema. Yo podría escribir una función rápida que rompe las rutas de acceso de seguridad, pruebas de cada nivel, y añade la subclave si no lo hay ya, pero yo prefiero no hacerlo si hay una forma más elegante o incorporado en la manera de hacerlo.