Microsoft Visio 2016 › Disable Items in User Interface › Predefined
Disable predefined commands
Supported on SUPPORTED_Windows7 (defined in the Windows templates)
What it does
Specify command bar buttons and menu items to disable.
What it writes
- Hive
- HKEY_CURRENT_USER
- Registry key
software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes
Why it needs changes for Intune
- Policy references a Windows supportedOn definition.
- ADMX-INTUNE-WINDOWS-SUPPORTEDON-REFERENCE
Options
| Option | Type | Registry value | Allowed values |
|---|---|---|---|
| File Tab | Share | Email | Checkbox | filesendtomailrecipient |
On (1) or off (0) |
| Insert tab | Hyperlink | Checkbox | inserthyperlink |
On (1) or off (0) |
| Developer tab | Macros | Checkbox | toolsmacrosmacros |
On (1) or off (0) |
| Developer tab | Visual Basic | Checkbox | toolsmacrosvbe |
On (1) or off (0) |
| File tab | Options | Checkbox | toolsoptions |
On (1) or off (0) |
Configure and deploy
Choose a state and the option values; the output below is generated from the template for exactly that.
Enabled · User · template defaults
Registry file (.reg)
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes]
"filesendtomailrecipient"="2188"
"generaloptions"="4108"
"inserthyperlink"="1576"
"toolsmacrosmacros"="186"
"toolsmacrosvbe"="1695"
"toolsoptions"="11323"
"weboptions"="4107"
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: Disable predefined commands
# Name: L_Disablecommandbarbuttonsandmenuitems
# Scope: User
# State: Enabled
# Source: visio16.admx
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'filesendtomailrecipient' -PropertyType 'String' -Value '2188'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'inserthyperlink' -PropertyType 'String' -Value '1576'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'toolsmacrosmacros' -PropertyType 'String' -Value '186'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'toolsmacrosvbe' -PropertyType 'String' -Value '1695'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'toolsoptions' -PropertyType 'String' -Value '11323'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'weboptions' -PropertyType 'String' -Value '4107'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'generaloptions' -PropertyType 'String' -Value '4108'
- 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.
- The generated payload is incomplete because one or more ADMX element values were not supplied: L_FileSendToMailRecipient, L_InsertHyperlink, L_ToolsMacrosMacros, L_ToolsMacrosVisualBasicEditor, L_VisioOptions99
ADMX profile candidate (OMA-URI)
./User/Vendor/MSFT/Policy/Config/ADMX_visio16/L_DisablecommandbarbuttonsandmenuitemsIntune 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: Disable predefined commands
# Name: L_Disablecommandbarbuttonsandmenuitems
# Scope: User
# State: Enabled
# Source: visio16.admx
$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'filesendtomailrecipient' -Kind 'String' -Expected '2188'
if (-not $isMatch) {
$reasons.Add('Value mismatch: HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes\filesendtomailrecipient') | Out-Null
}
$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'inserthyperlink' -Kind 'String' -Expected '1576'
if (-not $isMatch) {
$reasons.Add('Value mismatch: HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes\inserthyperlink') | Out-Null
}
$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'toolsmacrosmacros' -Kind 'String' -Expected '186'
if (-not $isMatch) {
$reasons.Add('Value mismatch: HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes\toolsmacrosmacros') | Out-Null
}
$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'toolsmacrosvbe' -Kind 'String' -Expected '1695'
if (-not $isMatch) {
$reasons.Add('Value mismatch: HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes\toolsmacrosvbe') | Out-Null
}
$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'toolsoptions' -Kind 'String' -Expected '11323'
if (-not $isMatch) {
$reasons.Add('Value mismatch: HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes\toolsoptions') | Out-Null
}
$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'weboptions' -Kind 'String' -Expected '4107'
if (-not $isMatch) {
$reasons.Add('Value mismatch: HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes\weboptions') | Out-Null
}
$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'generaloptions' -Kind 'String' -Expected '4108'
if (-not $isMatch) {
$reasons.Add('Value mismatch: HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes\generaloptions') | 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: Disable predefined commands
# Name: L_Disablecommandbarbuttonsandmenuitems
# Scope: User
# State: Enabled
# Source: visio16.admx
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'filesendtomailrecipient' -PropertyType 'String' -Value '2188'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'inserthyperlink' -PropertyType 'String' -Value '1576'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'toolsmacrosmacros' -PropertyType 'String' -Value '186'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'toolsmacrosvbe' -PropertyType 'String' -Value '1695'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'toolsoptions' -PropertyType 'String' -Value '11323'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'weboptions' -PropertyType 'String' -Value '4107'
Set-RegistryValue -Path 'Registry::HKEY_CURRENT_USER\software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes' -Name 'generaloptions' -PropertyType 'String' -Value '4108'
History 1 retained release
- 5568.100010 Aug 2026
- Already present in the first release ChangeIntel keeps.
Template
- Internal name
L_Disablecommandbarbuttonsandmenuitems- Namespace
visio16.Office.Microsoft.Policies.Windows- Template file
visio16.admx- Release
- Microsoft 365 Apps 5568.1000 · file set
8be05d876aae137d…
Definition, editor controls and support
Definition
<policy class="User" displayName="$(string.L_Disablecommandbarbuttonsandmenuitems)" explainText="$(string.L_PredefinedExplain)" key="software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes" name="L_Disablecommandbarbuttonsandmenuitems" presentation="$(presentation.L_Disablecommandbarbuttonsandmenuitems)" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="visio16.Office.Microsoft.Policies.Windows:L_Predefined" />
<supportedOn ref="Microsoft.Policies.Windows:SUPPORTED_Windows7" />
<elements>
<boolean id="L_FileSendToMailRecipient" valueName="filesendtomailrecipient">
<trueValue>
<string>2188</string>
</trueValue>
<falseValue>
<string>0</string>
</falseValue>
</boolean>
<boolean id="L_InsertHyperlink" valueName="inserthyperlink">
<trueValue>
<string>1576</string>
</trueValue>
<falseValue>
<string>0</string>
</falseValue>
</boolean>
<boolean id="L_ToolsMacrosMacros" valueName="toolsmacrosmacros">
<trueValue>
<string>186</string>
</trueValue>
<falseValue>
<string>0</string>
</falseValue>
</boolean>
<boolean id="L_ToolsMacrosVisualBasicEditor" valueName="toolsmacrosvbe">
<trueValue>
<string>1695</string>
</trueValue>
<falseValue>
<string>0</string>
</falseValue>
</boolean>
<boolean id="L_VisioOptions99" valueName="toolsoptions">
<trueValue>
<string>11323</string>
</trueValue>
<falseValue>
<string>0</string>
</falseValue>
<trueList>
<item key="software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes" valueName="weboptions">
<value>
<string>4107</string>
</value>
</item>
<item key="software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes" valueName="generaloptions">
<value>
<string>4108</string>
</value>
</item>
</trueList>
<falseList>
<item key="software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes" valueName="weboptions">
<value>
<delete />
</value>
</item>
<item key="software\policies\microsoft\office\16.0\visio\disabledcmdbaritemscheckboxes" valueName="generaloptions">
<value>
<delete />
</value>
</item>
</falseList>
</boolean>
</elements>
</policy>Editor controls
<presentation id="L_Disablecommandbarbuttonsandmenuitems" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<checkBox refId="L_FileSendToMailRecipient">File Tab | Share | Email</checkBox>
<checkBox refId="L_InsertHyperlink">Insert tab | Hyperlink</checkBox>
<checkBox refId="L_ToolsMacrosMacros">Developer tab | Macros</checkBox>
<checkBox refId="L_ToolsMacrosVisualBasicEditor">Developer tab | Visual Basic</checkBox>
<checkBox refId="L_VisioOptions99">File tab | Options</checkBox>
</presentation>Supported platforms and category
visio16.Office.Microsoft.Policies.Windows:category:L_Disableitemsinuserinterface
<category displayName="$(string.L_Disableitemsinuserinterface)" name="L_Disableitemsinuserinterface" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="visio16.Office.Microsoft.Policies.Windows:L_MicrosoftVisio" />
</category>
visio16.Office.Microsoft.Policies.Windows:category:L_MicrosoftVisio
<category displayName="$(string.L_MicrosoftVisio)" name="L_MicrosoftVisio" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
visio16.Office.Microsoft.Policies.Windows:category:L_Predefined
<category displayName="$(string.L_Predefined)" name="L_Predefined" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="visio16.Office.Microsoft.Policies.Windows:L_Disableitemsinuserinterface" />
</category>
visio16.Office.Microsoft.Policies.Windows:unresolved:Microsoft.Policies.Windows:SUPPORTED_Windows7
<unresolved reference="Microsoft.Policies.Windows:SUPPORTED_Windows7" />
visio16.Office.Microsoft.Policies.Windows:category:L_Disableitemsinuserinterface
<category displayName="$(string.L_Disableitemsinuserinterface)" name="L_Disableitemsinuserinterface" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="visio16.Office.Microsoft.Policies.Windows:L_MicrosoftVisio" />
</category>
<strings><string id="visio16.Office.Microsoft.Policies.Windows:L_Disableitemsinuserinterface">Disable Items in User Interface</string></strings>
visio16.Office.Microsoft.Policies.Windows:category:L_MicrosoftVisio
<category displayName="$(string.L_MicrosoftVisio)" name="L_MicrosoftVisio" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
<strings><string id="visio16.Office.Microsoft.Policies.Windows:L_MicrosoftVisio">Microsoft Visio 2016</string></strings>
visio16.Office.Microsoft.Policies.Windows:category:L_Predefined
<category displayName="$(string.L_Predefined)" name="L_Predefined" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="visio16.Office.Microsoft.Policies.Windows:L_Disableitemsinuserinterface" />
</category>
<strings><string id="visio16.Office.Microsoft.Policies.Windows:L_Predefined">Predefined</string></strings>