Local app discovery
Supported on: All Citrix Workspace supported platforms
Description
This policy helps integrate locally installed Windows operating system apps with Citrix Workspace app. When you set this policy to Not Configured, Citrix Workspace app is not integrated with the locally installed apps. When you set this policy to Enabled, Citrix Workspace app integrates with the apps that are locally installed only when Enable local app discovery option is also enabled. When you set this policy to Disabled, Citrix Workspace app is not integrated with the apps that are locally installed. The whitelist field lets you add the location of the apps that your administrator would like to pin to the Workspace app. For example: [ { "arguments": "www.citrix.com", "name" : "Company Pages - Citrix Home", "path" : "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe" }, { "arguments": "www.microsoft.com", "name" : "Company Pages - Microsoft Home", "path" : "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe" }, { "arguments": "", "name" : "Company Office - Word", "path" : "C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\winword.exe" }, { "arguments": "", "name" : "Company Office - Excel", "path" : "C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\excel.exe" }, { "arguments": "", "name" : "Company Office - PowerPoint", "path" : "C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\POWERPNT.exe" } ]
Registry
Software\Policies\Citrix\Dazzle REG Builder
BETAConfigure the state and elements to generate .reg, PowerShell, Intune, and SCCM outputs.
These exports replicate the policy's registry effect. Editing the registry directly is not the same as applying the GPO through the management console (no gpupdate, no central reporting). Test before production; HKLM changes require administrator rights.
.reg file
Windows Registry Editor Version 5.00
; Exported from gporais.com
; Policy: Local app discovery
; State: Enabled
; Supported on: All Citrix Workspace supported platforms
[HKEY_LOCAL_MACHINE\Software\Policies\Citrix\Dazzle]
"EnableLocalAppDiscovery"=dword:00000001
"LocalAppWhitelist"=hex(7):00,00
; REG_MULTI_SZ: one string per input line; edit in regedit if you need richer formatting. PowerShell
# Exported from gporais.com
# Policy: Local app discovery
# State: Enabled
# Supported on: All Citrix Workspace supported platforms
$path = 'HKLM:\Software\Policies\Citrix\Dazzle'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'EnableLocalAppDiscovery' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'LocalAppWhitelist' -Value @() -Type MultiString
# REG_MULTI_SZ: one string per input line; edit in regedit if you need richer formatting. Intune XML
No direct Policy CSP / OMA-URI mapping for this policy. Use the Intune Remediation tab, or ingest the ADMX in Intune. Intune Remediation
# === Detection script ===
# Exported from gporais.com
# Policy: Local app discovery
# State: Enabled
# Supported on: All Citrix Workspace supported platforms
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Citrix\Dazzle' -Name 'EnableLocalAppDiscovery' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Citrix\Dazzle' -Name 'LocalAppWhitelist' -Expected @() -Kind MultiString)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Local app discovery
# State: Enabled
# Supported on: All Citrix Workspace supported platforms
$path = 'HKLM:\Software\Policies\Citrix\Dazzle'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'EnableLocalAppDiscovery' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'LocalAppWhitelist' -Value @() -Type MultiString
# REG_MULTI_SZ: one string per input line; edit in regedit if you need richer formatting. SCCM CI
# Exported from gporais.com
# Policy: Local app discovery
# State: Enabled
# Supported on: All Citrix Workspace supported platforms
# SCCM Configuration Item guidance:
# Create a Configuration Item of type "Setting: Script".
# Discovery script: use the Detection script below.
# Remediation script: use the Remediation script below.
# Compliance rule: the Discovery script output equals 'Compliant'.
# === Detection script ===
# Exported from gporais.com
# Policy: Local app discovery
# State: Enabled
# Supported on: All Citrix Workspace supported platforms
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Citrix\Dazzle' -Name 'EnableLocalAppDiscovery' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Citrix\Dazzle' -Name 'LocalAppWhitelist' -Expected @() -Kind MultiString)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Local app discovery
# State: Enabled
# Supported on: All Citrix Workspace supported platforms
$path = 'HKLM:\Software\Policies\Citrix\Dazzle'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'EnableLocalAppDiscovery' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'LocalAppWhitelist' -Value @() -Type MultiString
# REG_MULTI_SZ: one string per input line; edit in regedit if you need richer formatting.