Estaba buscando en línea y realmente encontré esto al azar.
Larga historia corta, una combinación de PowerShell (script proporcionado) y GPO.
http://4sysops.com/archives/forcing-notification-area-icons-to-always-show-in-windows-7-or-windows-8/
Larga historia, cree un script de PowerShell que contenga lo siguiente:
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
}
}
Guárdelo como un archivo ps1 con el nombre que elija.
Abra el MMC de administración de directivas de grupo. Seleccione su Objeto de directiva de grupo elegido, haga clic derecho y seleccione Editar. En el editor, navegue a Configuración de usuario> Configuración de Windows> Scripts> Inicio de sesión y haga clic en "Propiedades de pantalla". Vaya a la pestaña PowerShell y haga clic en Ver archivos.
Copie la secuencia de comandos que acaba de crear en la ventana del Explorador que acaba de abrir y luego cierre la ventana.
En la ventana de propiedades del script de inicio de sesión, agregue un nuevo script de PowerShell, en el nombre del script, ingrese el nombre del script que utilizó (ejemplo: NotifyIcon.ps1), y luego en los parámetros, ingrese el nombre del programa (distingue entre mayúsculas y minúsculas) seguido por la configuración a usar:
0 = solo mostrar notificaciones 1 = ocultar íconos y notificaciones 2 = mostrar íconos y notificaciones <--- El que necesita
Ejemplo, si necesita que el servidor RealVNC siempre aparezca, debe ingresar:
winvnc4.exe 2
como los paramenters
Puede encontrar el nombre del ejecutable de dos maneras diferentes, como abrir un cuadro de diálogo Ejecutar y escribir msconfig
y mirar los programas de inicio, navegar manualmente al directorio de instalación C:\Program Files\{your program}
o tratar de hacer coincidir el programa deseado mirando la ejecución procesos en el Administrador de tareas. 9 de cada 10 veces esto dará como resultado el éxito.
Para que esto funcione, el usuario debe haber ejecutado previamente la aplicación y luego cerrar sesión correctamente, de modo que explorer.exe tenga la oportunidad de escribir el historial actualizado del área de notificación en el Registro. En un inicio de sesión posterior, el script debe ubicar con éxito el programa en el historial y actualizar su configuración para que siempre se muestre.
También puede intentar ejecutar el script manualmente desde un indicador de PowerShell para depurar, pero DEBE matar a explorer.exe ('taskkill / f / im explorer.exe') antes de ejecutarlo; de lo contrario, el explorador no verá su actualización y sobrescribirá cuando deja de fumar.
No me atribuyo crédito por este proceso. No lo escribí, solo lo encontré. El crédito por el guión es para Micah Rowland . El crédito para el proceso de GPO va a Geoff Kendal