Propagate registry errors other than a missing policy store root

Claude-Session: https://claude.ai/code/session_01Y4KM6AL3cDzUsx3HEHCoxs
This commit is contained in:
Viktor Liu
2026-08-13 17:15:19 +02:00
parent 1da09fcf60
commit 8e3b3c3150
+10 -4
View File
@@ -552,13 +552,19 @@ func (r *registryConfigurator) restoreUncleanShutdownDNS() error {
}
// listNRPTRuleKeys returns the names of our NRPT rule keys under a policy store
// root. A root that cannot be opened holds nothing to clean up: the GPO store is
// absent on a machine without DNS Client policy.
// root. An absent root holds nothing to clean up, which is the normal state of
// the GPO store on a machine without DNS Client policy.
func listNRPTRuleKeys(root string) ([]string, error) {
k, err := registry.OpenKey(registry.LOCAL_MACHINE, root, registry.ENUMERATE_SUB_KEYS)
if err != nil {
log.Debugf("failed to open HKEY_LOCAL_MACHINE\\%s: %v", root, err)
switch {
case errors.Is(err, registry.ErrNotExist), errors.Is(err, syscall.ERROR_PATH_NOT_FOUND):
// the GPO store is absent on a machine without DNS client policy
log.Debugf("HKEY_LOCAL_MACHINE\\%s does not exist", root)
return nil, nil
case err != nil:
// any other failure has to reach the caller: reporting no rules would
// report a successful cleanup while leaving the rules in place
return nil, fmt.Errorf("open HKEY_LOCAL_MACHINE\\%s: %w", root, err)
}
defer closer(k)