How to change default values in registry with DSC registry resource

Welcome Forums DSC (Desired State Configuration) How to change default values in registry with DSC registry resource

This topic contains 6 replies, has 4 voices, and was last updated by

 
Participant
2 years, 10 months ago.

  • Author
    Posts
  • #26804

    Participant
    Points: 0
    Rank: Member

    Hi all,

    I'm trying to change the default value for a key. When I try do this with the Registry Resource it simply creates a "second" (Default) value in key. Is it a bug or am I doing it wrong?

            Registry WinDirStatDirectoryConfig {
                DependsOn = "[Archive]InstallWinDirStat"
                Ensure = 'Present'
                Force = $True
                Key = 'HKEY_CLASSES_ROOT\Directory\shell\Show WinDirStat\command'
                ValueName = "(Default)"
                ValueType = 'String'
                ValueData = '"C:\Program Files (x86)\WinDirStat\windirstat.exe" "%1"' 
            }
    
  • #26922

    Keymaster
    Points: 1,785
    Helping HandTeam Member
    Rank: Community Hero

    The "(Default)" isn't a discrete value – that is, it isn't an ItemProperty the way other values are. For example, in the shell, you'd do this to set a key's default value:

    Set-Item -Path HKCU:\Software\ScriptingGuys -Value "MyNewValue" -Type string

    You're just setting the value of the key itself – not creating a new ItemProperty. So you don't specify a ValueName.

    The problem is that the Registry resource mandates ValueName – which sort of suggests that it can't work with keys ("items") but only with values ("item properties"). If it can't directly modify a key, then there's no way to set the default value.

    You could probably work around this by using a Script resource, and using Get-Item and Set-Item in the Test{} and Set{} script blocks.

  • #27224

    Participant
    Points: 0
    Rank: Member

    Many thanks for the response Don.

    I think I'm going to make a custom resource as I need to make changes to user hives as well which the Registry resource does not support.

  • #27241

    Member
    Points: 0
    Rank: Member

    The default value is actually an empty value name, but of course, MOF doesn't allow you to have empty strings assigned to Key properties.

    In a similar resource I wrote for modifying local GPO registry.pol files, I worked around this problem by combining the key / value names into a single Key property. If you wanted to modify the default value, you'd just specify a key path with a trailing backslash. This might be a good thing to log on Connect, or to add in the form of an xRegistry resource down the road.

  • #27417

    Participant
    Points: 0
    Rank: Member

    I have submitted a suggestion on Connect (https://connect.microsoft.com/PowerShell/feedbackdetail/view/1532614/allow-dsc-registry-resource-to-modify-default-value-in-registry-keys).

    I tried your workaround plus variations to it but could not get DSC to modify the default value. I wrote a Script resource to get around the problem.

    Thank you Dave and Don for your time.

  • #30061

    Participant
    Points: 0
    Rank: Member

    Looks like this was fixed with the Powershell 5.0 release. If you set the ValueName="" it will now set the default value.

  • #36931

    Participant
    Points: 0
    Rank: Member

    @chris, thanks for the heads up. You are correct! It's now been fixed 😉

The topic ‘How to change default values in registry with DSC registry resource’ is closed to new replies.