Je cherchais en ligne et j'ai trouvé cela au hasard.
Pour faire court, une combinaison de PowerShell (script fourni) et de GPO.
http://4sysops.com/archives/forcing-notification-area-icons-to-always-show-in-windows-7-or-windows-8/
Longue histoire, créez un script PowerShell contenant les éléments suivants:
param(
[Parameter(Mandatory=$true,HelpMessage='The name of the program')][string]$ProgramName,
[Parameter(Mandatory=$true,HelpMessage='The setting (2 = show icon and notifications 1 = hide icon and notifications, 0 = only show notifications')]
[ValidateScript({if ($_ -lt 0 -or $_ -gt 2) { throw 'Invalid setting' } return $true})]
[Int16]$Setting
)
$encText = New-Object System.Text.UTF8Encoding
[byte[]] $bytRegKey = @()
$strRegKey = ""
$bytRegKey = $(Get-ItemProperty $(Get-Item 'HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify').PSPath).IconStreams
for($x=0; $x -le $bytRegKey.Count; $x++)
{
$tempString = [Convert]::ToString($bytRegKey[$x], 16)
switch($tempString.Length)
{
0 {$strRegKey += "00"}
1 {$strRegKey += "0" + $tempString}
2 {$strRegKey += $tempString}
}
}
[byte[]] $bytTempAppPath = @()
$bytTempAppPath = $encText.GetBytes($ProgramName)
[byte[]] $bytAppPath = @()
$strAppPath = ""
Function Rot13($byteToRot)
{
if($byteToRot -gt 64 -and $byteToRot -lt 91)
{
$bytRot = $($($byteToRot - 64 + 13) % 26 + 64)
return $bytRot
}
elseif($byteToRot -gt 96 -and $byteToRot -lt 123)
{
$bytRot = $($($byteToRot - 96 + 13) % 26 + 96)
return $bytRot
}
else
{
return $byteToRot
}
}
for($x = 0; $x -lt $bytTempAppPath.Count * 2; $x++)
{
If($x % 2 -eq 0)
{
$curbyte = $bytTempAppPath[$([Int]($x / 2))]
$bytAppPath += Rot13($curbyte)
}
Else
{
$bytAppPath += 0
}
}
for($x=0; $x -lt $bytAppPath.Count; $x++)
{
$tempString = [Convert]::ToString($bytAppPath[$x], 16)
switch($tempString.Length)
{
0 {$strAppPath += "00"}
1 {$strAppPath += "0" + $tempString}
2 {$strAppPath += $tempString}
}
}
if(-not $strRegKey.Contains($strAppPath))
{
Write-Host Program not found. Programs are case sensitive.
break
}
[byte[]] $header = @()
$items = @{}
for($x=0; $x -lt 20; $x++)
{
$header += $bytRegKey[$x]
}
for($x=0; $x -lt $(($bytRegKey.Count-20)/1640); $x++)
{
[byte[]] $item=@()
$startingByte = 20 + ($x*1640)
$item += $bytRegKey[$($startingByte)..$($startingByte+1639)]
$items.Add($startingByte.ToString(), $item)
}
foreach($key in $items.Keys)
{
$item = $items[$key]
$strItem = ""
$tempString = ""
for($x=0; $x -le $item.Count; $x++)
{
$tempString = [Convert]::ToString($item[$x], 16)
switch($tempString.Length)
{
0 {$strItem += "00"}
1 {$strItem += "0" + $tempString}
2 {$strItem += $tempString}
}
}
if($strItem.Contains($strAppPath))
{
Write-Host Item Found with $ProgramName in item starting with byte $key
$bytRegKey[$([Convert]::ToInt32($key)+528)] = $setting
Set-ItemProperty $($(Get-Item 'HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify').PSPath) -name IconStreams -value $bytRegKey
}
}
Enregistrez-le en tant que fichier ps1 en utilisant le nom de votre choix.
Ouvrez la console MMC de gestion des stratégies de groupe. Sélectionnez l'objet de stratégie de groupe que vous avez choisi, cliquez avec le bouton droit et sélectionnez Modifier. Dans l'éditeur, accédez à Configuration utilisateur> Paramètres Windows> Scripts> Connexion et cliquez sur "Propriétés d'affichage". Accédez à l'onglet PowerShell et cliquez sur Afficher les fichiers.
Copiez le script que vous venez de créer dans la fenêtre de l'Explorateur qui vient de s'ouvrir, puis fermez-la.
Dans la fenêtre des propriétés du script de connexion, ajoutez un nouveau script PowerShell, dans le nom du script, entrez le nom du script que vous avez utilisé (exemple: NotifyIcon.ps1), puis dans les paramètres, entrez le nom du programme (sensible à la casse!) Suivi par le paramètre à utiliser:
0 = afficher uniquement les notifications 1 = masquer l'icône et les notifications 2 = afficher l'icône et les notifications <--- Celui dont vous avez besoin
Par exemple, si vous avez besoin que le serveur RealVNC apparaisse toujours, vous devez entrer:
winvnc4.exe 2
comme les paramenters
Vous pouvez trouver le nom de l'exécutable de deux manières différentes, comme ouvrir une boîte de dialogue Exécuter et taper msconfig
et regarder les programmes de démarrage, naviguer manuellement dans le répertoire d'installation C:\Program Files\{your program}
ou essayer de faire correspondre le programme souhaité en regardant l'exécution. processus dans le Gestionnaire des tâches. 9 fois sur 10, cela aboutira au succès.
Pour que cela fonctionne, l'utilisateur doit avoir préalablement exécuté l'application, puis se déconnecter correctement, afin qu'explorer.exe ait la possibilité d'écrire l'historique de la zone de notification mis à jour dans le Registre. Lors d'une connexion ultérieure, le script doit réussir à localiser le programme dans l'historique et à mettre à jour son paramètre pour qu'il s'affiche toujours.
Vous pouvez également essayer d'exécuter le script manuellement à partir d'une invite PowerShell pour déboguer, mais vous DEVEZ tuer explorer.exe ('taskkill / f / im explorer.exe') avant de l'exécuter, sinon l'explorateur ne verra pas votre mise à jour et écrasera quand il quitte.
Je ne prends aucun crédit pour ce processus. Je ne l'ai pas écrit, je l'ai juste trouvé. Le mérite du script revient à Micah Rowland . Le mérite du processus GPO revient à Geoff Kendal