Public mode

No tenant, Graph, or device access. Every item links to its source. What this means

Some sources or documents need attention: 253/255 feeds/APIs · 0/410 docs · checked 22:28 UTC Customize Public modeDiscuss ChangeIntel on Discord

Windows 11 Group Policy settings

3,621 settings · 25H2 · 1.0 · 29 Sep 2025

1 folder · 9 settingsCSV
Back to the list

Windows Components › Internet Explorer › Internet Settings › Advanced settings › Browsing

Turn off configuring underline links

UserIntune-readyUnderlineLinksPol

Supported on At least Internet Explorer 7.0

What it does

This policy setting specifies how you want links on webpages to be underlined. If you enable this policy setting, a user cannot choose when to underline links. You must specify when to underline links: • Always • Never • Hover (when the mouse pointer pauses on a link) If you disable or do not configure this policy setting, the user can choose when to underline links.

What it writes

Hive
HKEY_CURRENT_USER
Registry key
Software\Policies\Microsoft\Internet Explorer\Main

In Intune

No native CSP; import the ADMX (Intune-ready).

From Microsoft's Policy CSP DDF files (DDF v2 Files, February 2026), read 18 Oct 2026.

Options

OptionTypeRegistry valueAllowed values
Underline linksDefault: Always Drop-down list Anchor Underline
  • Alwaysyes
  • Neverno
  • Hoverhover

Configure and deploy

Choose a state and the option values; the output below is generated from the template for exactly that.

State
Options used when Enabled

Enabled · User · template defaults

Registry file (.reg)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main]
"Anchor Underline"="yes"


PowerShell

$ErrorActionPreference = 'Stop'

function Set-RegistryValue {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name,
        [Parameter(Mandatory = $true)][string] $PropertyType,
        [Parameter(Mandatory = $true)][object] $Value
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        New-Item -Path $Path -Force | Out-Null
    }

    New-ItemProperty -LiteralPath $Path -Name $Name -PropertyType $PropertyType -Value $Value -Force | Out-Null
}

function Remove-RegistryValue {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name
    )

    if (Test-Path -LiteralPath $Path) {
        Remove-ItemProperty -LiteralPath $Path -Name $Name -Force -ErrorAction SilentlyContinue
    }
}

function Clear-RegistryKeyValues {
    param(
        [Parameter(Mandatory = $true)][string] $Path
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        return
    }

    foreach ($propertyName in (Get-Item -LiteralPath $Path).Property) {
        Remove-ItemProperty -LiteralPath $Path -Name $propertyName -Force -ErrorAction SilentlyContinue
    }
}

# Policy: Turn off configuring underline links
# Name: UnderlineLinksPol
# Scope: User
# State: Enabled
# Source: inetres.admx

Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main' -Name 'Anchor Underline' -PropertyType 'String' -Value 'yes'
  • The OMA-URI is an inferred ADMX-backed Policy CSP candidate derived from the source ADMX file name and policy name.
  • Some Microsoft policies use built-in Policy CSP pages whose area names don't match the ADMX file name, so verify the candidate against Microsoft Learn before deployment.

ADMX profile candidate (OMA-URI)

./User/Vendor/MSFT/Policy/Config/ADMX_inetres/UnderlineLinksPol

ADMX SyncML candidate

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>1</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./User/Vendor/MSFT/Policy/Config/ADMX_inetres/UnderlineLinksPol</LocURI>
        </Target>
        <Data>&lt;enabled/&gt;
&lt;data id="UnderlineLinks" value="yes"/&gt;</Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>
Intune remediation scripts

Detection

$ErrorActionPreference = 'Stop'
$reasons = [System.Collections.Generic.List[string]]::new()

function Test-RegistryValueExists {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        return $false
    }

    return $null -ne (Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction SilentlyContinue)
}

function Test-RegistryValueEquals {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name,
        [Parameter(Mandatory = $true)][string] $Kind,
        [Parameter(Mandatory = $true)][object] $Expected
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        return $false
    }

    $valueObject = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction SilentlyContinue
    if ($null -eq $valueObject) {
        return $false
    }

    $actual = $valueObject.$Name
    switch ($Kind) {
        'String' { return [string]$actual -ceq [string]$Expected }
        'ExpandString' { return [string]$actual -ceq [string]$Expected }
        'DWord' { return [uint32]$actual -eq [uint32]$Expected }
        'QWord' { return [uint64]$actual -eq [uint64]$Expected }
        'MultiString' {
            $actualArray = @($actual)
            $expectedArray = @($Expected)
            if ($actualArray.Count -ne $expectedArray.Count) { return $false }
            for ($index = 0; $index -lt $actualArray.Count; $index++) {
                if ([string]$actualArray[$index] -cne [string]$expectedArray[$index]) { return $false }
            }
            return $true
        }
        'Binary' {
            $actualArray = [byte[]]$actual
            $expectedArray = [byte[]]$Expected
            if ($actualArray.Length -ne $expectedArray.Length) { return $false }
            for ($index = 0; $index -lt $actualArray.Length; $index++) {
                if ($actualArray[$index] -ne $expectedArray[$index]) { return $false }
            }
            return $true
        }
        default { return [string]$actual -ceq [string]$Expected }
    }
}

# Policy: Turn off configuring underline links
# Name: UnderlineLinksPol
# Scope: User
# State: Enabled
# Source: inetres.admx

$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main' -Name 'Anchor Underline' -Kind 'String' -Expected 'yes'
if (-not $isMatch) {
    $reasons.Add('Value mismatch: HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main\Anchor Underline') | Out-Null
}

if ($reasons.Count -eq 0) {
    Write-Output 'Compliant'
    exit 0
}

$reasons | ForEach-Object { Write-Output $_ }
exit 1

Remediation

$ErrorActionPreference = 'Stop'

function Set-RegistryValue {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name,
        [Parameter(Mandatory = $true)][string] $PropertyType,
        [Parameter(Mandatory = $true)][object] $Value
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        New-Item -Path $Path -Force | Out-Null
    }

    New-ItemProperty -LiteralPath $Path -Name $Name -PropertyType $PropertyType -Value $Value -Force | Out-Null
}

function Remove-RegistryValue {
    param(
        [Parameter(Mandatory = $true)][string] $Path,
        [Parameter(Mandatory = $true)][string] $Name
    )

    if (Test-Path -LiteralPath $Path) {
        Remove-ItemProperty -LiteralPath $Path -Name $Name -Force -ErrorAction SilentlyContinue
    }
}

function Clear-RegistryKeyValues {
    param(
        [Parameter(Mandatory = $true)][string] $Path
    )

    if (-not (Test-Path -LiteralPath $Path)) {
        return
    }

    foreach ($propertyName in (Get-Item -LiteralPath $Path).Property) {
        Remove-ItemProperty -LiteralPath $Path -Name $propertyName -Force -ErrorAction SilentlyContinue
    }
}

# Policy: Turn off configuring underline links
# Name: UnderlineLinksPol
# Scope: User
# State: Enabled
# Source: inetres.admx

Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main' -Name 'Anchor Underline' -PropertyType 'String' -Value 'yes'

History 5 retained releases

  1. 22H2 · 1.015 Jul 2024
    • Already present in the first release ChangeIntel keeps.

4 later releases left it unchanged.

Template

Internal name
UnderlineLinksPol
Namespace
Microsoft.Policies.InternetExplorer
Template file
inetres.admx
Release
Windows 11 25H2 · 1.0 · file set de4e49983ebd651f…
Definition, editor controls and support

Definition

<policy class="User" displayName="$(string.UnderlineLinksPol)" explainText="$(string.UnderlineLinksPol_Explain)" key="Software\Policies\Microsoft\Internet Explorer\Main" name="UnderlineLinksPol" presentation="$(presentation.UnderlineLinksPol)" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="Microsoft.Policies.InternetExplorer:Browsing" />
      <supportedOn ref="Microsoft.Policies.InternetExplorer:SUPPORTED_IE7" />
      <elements>
        <enum id="UnderlineLinks" valueName="Anchor Underline">
          <item displayName="$(string.Always)">
            <value>
              <string>yes</string>
            </value>
          </item>
          <item displayName="$(string.Never)">
            <value>
              <string>no</string>
            </value>
          </item>
          <item displayName="$(string.Hover)">
            <value>
              <string>hover</string>
            </value>
          </item>
        </enum>
      </elements>
    </policy>

Editor controls

<presentation id="UnderlineLinksPol" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
        <dropdownList defaultItem="0" noSort="true" refId="UnderlineLinks">Underline links</dropdownList>
      </presentation>

Supported platforms and category

Microsoft.Policies.InternetExplorer:category:Advanced
<category displayName="$(string.Advanced)" name="Advanced" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="Microsoft.Policies.InternetExplorer:InternetSettings" />
    </category>
Microsoft.Policies.InternetExplorer:category:Browsing
<category displayName="$(string.Browsing)" name="Browsing" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="Microsoft.Policies.InternetExplorer:Advanced" />
    </category>
Microsoft.Policies.InternetExplorer:category:InternetExplorer
<category displayName="$(string.InternetExplorer)" explainText="$(string.IE_ExplainCat)" name="InternetExplorer" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="Microsoft.Policies.Windows:WindowsComponents" />
    </category>
Microsoft.Policies.InternetExplorer:category:InternetSettings
<category displayName="$(string.InternetSettings)" name="InternetSettings" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="Microsoft.Policies.InternetExplorer:InternetExplorer" />
    </category>
Microsoft.Policies.InternetExplorer:definition:SUPPORTED_IE7
<definition displayName="$(string.SUPPORTED_IE7)" name="SUPPORTED_IE7" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
        <or>
          <range minVersionIndex="7" ref="Microsoft.Policies.Products:InternetExplorer" />
        </or>
      </definition>
Microsoft.Policies.Products:product:InternetExplorer
sha256:f287ee590cbba46b7a95511866303967b9370c7c7d81185659d675ca19b05d72
Microsoft.Policies.Windows:category:WindowsComponents
<category displayName="$(string.WindowsComponents)" explainText="$(string.WindowsComponents_Help)" name="WindowsComponents" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
Microsoft.Policies.InternetExplorer:category:Advanced
<category displayName="$(string.Advanced)" name="Advanced" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="Microsoft.Policies.InternetExplorer:InternetSettings" />
    </category>
<strings><string id="Microsoft.Policies.InternetExplorer:Advanced">Advanced settings</string></strings>
Microsoft.Policies.InternetExplorer:category:Browsing
<category displayName="$(string.Browsing)" name="Browsing" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="Microsoft.Policies.InternetExplorer:Advanced" />
    </category>
<strings><string id="Microsoft.Policies.InternetExplorer:Browsing">Browsing</string></strings>
Microsoft.Policies.InternetExplorer:category:InternetExplorer
<category displayName="$(string.InternetExplorer)" explainText="$(string.IE_ExplainCat)" name="InternetExplorer" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="Microsoft.Policies.Windows:WindowsComponents" />
    </category>
<strings><string id="Microsoft.Policies.InternetExplorer:IE_ExplainCat">Contains settings to configure Internet Explorer</string><string id="Microsoft.Policies.InternetExplorer:InternetExplorer">Internet Explorer</string></strings>
Microsoft.Policies.InternetExplorer:category:InternetSettings
<category displayName="$(string.InternetSettings)" name="InternetSettings" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <parentCategory ref="Microsoft.Policies.InternetExplorer:InternetExplorer" />
    </category>
<strings><string id="Microsoft.Policies.InternetExplorer:InternetSettings">Internet Settings</string></strings>
Microsoft.Policies.InternetExplorer:definition:SUPPORTED_IE7
<definition displayName="$(string.SUPPORTED_IE7)" name="SUPPORTED_IE7" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
        <or>
          <range minVersionIndex="7" ref="Microsoft.Policies.Products:InternetExplorer" />
        </or>
      </definition>
<strings><string id="Microsoft.Policies.InternetExplorer:SUPPORTED_IE7">At least Internet Explorer 7.0</string></strings>
Microsoft.Policies.Products:product:InternetExplorer
<product displayName="$(string.InternetExplorer)" name="InternetExplorer" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
        <majorVersion displayName="$(string.InternetExplorer30)" name="InternetExplorer30" versionIndex="3" />
        <majorVersion displayName="$(string.InternetExplorer40)" name="InternetExplorer40" versionIndex="4" />
        <majorVersion displayName="$(string.InternetExplorer50)" name="InternetExplorer50" versionIndex="5" />
        <majorVersion displayName="$(string.InternetExplorer60)" name="InternetExplorer60" versionIndex="6" />
        <majorVersion displayName="$(string.InternetExplorer70)" name="InternetExplorer70" versionIndex="7" />
        <majorVersion displayName="$(string.InternetExplorer80)" name="InternetExplorer80" versionIndex="8" />
        <majorVersion displayName="$(string.InternetExplorer90)" name="InternetExplorer90" versionIndex="9" />
        <majorVersion displayName="$(string.InternetExplorer100)" name="InternetExplorer100" versionIndex="10" />
        <majorVersion displayName="$(string.InternetExplorer110)" name="InternetExplorer110" versionIndex="11" />
      </product>
<strings><string id="Microsoft.Policies.Products:InternetExplorer">Internet Explorer</string><string id="Microsoft.Policies.Products:InternetExplorer100">Internet Explorer 10</string><string id="Microsoft.Policies.Products:InternetExplorer110">Internet Explorer 11</string><string id="Microsoft.Policies.Products:InternetExplorer30">Internet Explorer 3</string><string id="Microsoft.Policies.Products:InternetExplorer40">Internet Explorer 4</string><string id="Microsoft.Policies.Products:InternetExplorer50">Internet Explorer 5</string><string id="Microsoft.Policies.Products:InternetExplorer60">Internet Explorer 6</string><string id="Microsoft.Policies.Products:InternetExplorer70">Internet Explorer 7</string><string id="Microsoft.Policies.Products:InternetExplorer80">Internet Explorer 8</string><string id="Microsoft.Policies.Products:InternetExplorer90">Internet Explorer 9</string></strings>
Microsoft.Policies.Windows:category:WindowsComponents
<category displayName="$(string.WindowsComponents)" explainText="$(string.WindowsComponents_Help)" name="WindowsComponents" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
<strings><string id="Microsoft.Policies.Windows:WindowsComponents">Windows Components</string><string id="Microsoft.Policies.Windows:WindowsComponents_Help">Contains settings for operating system components.</string></strings>
ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 18 Oct 22:28 UTC · 253 of 255 readable · 252 fully read · documentation 0/410 current