Ich habe online gesucht und das tatsächlich zufällig gefunden.
Kurz gesagt, eine Kombination aus PowerShell (Skript bereitgestellt) und Gruppenrichtlinienobjekt.
http://4sysops.com/archives/forcing-notification-area-icons-to-always-show-in-windows-7-or-windows-8/
Lange Geschichte, erstellen Sie ein PowerShell-Skript, das Folgendes enthält:
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
}
}
Speichern Sie es als ps1-Datei unter dem Namen Ihrer Wahl.
Öffnen Sie die Gruppenrichtlinien-Verwaltungs-MMC. Wählen Sie das gewünschte Gruppenrichtlinienobjekt aus, klicken Sie mit der rechten Maustaste und wählen Sie Bearbeiten. Navigieren Sie im Editor zu Benutzerkonfiguration> Windows-Einstellungen> Skripts> Anmelden und klicken Sie auf "Eigenschaften von Anzeige". Wechseln Sie zur Registerkarte PowerShell und klicken Sie auf Dateien anzeigen.
Kopieren Sie das soeben erstellte Skript in das gerade geöffnete Explorer-Fenster und schließen Sie es dann wieder.
Fügen Sie im Eigenschaftenfenster des Anmeldeskripts ein neues PowerShell-Skript hinzu, geben Sie im Skriptnamen den Namen des verwendeten Skripts ein (Beispiel: NotifyIcon.ps1) und geben Sie in den Parametern den Programmnamen ein (Groß- und Kleinschreibung beachten!) von der Einstellung zu verwenden:
0 = nur Benachrichtigungen anzeigen 1 = Symbol und Benachrichtigungen ausblenden 2 = Symbol und Benachrichtigungen anzeigen <--- Das, was Sie benötigen
Beispiel: Wenn der RealVNC-Server immer angezeigt werden soll, geben Sie Folgendes ein:
winvnc4.exe 2
als die paramenters
Sie können den Namen der ausführbaren Datei auf verschiedene Arten herausfinden, z. B. indem Sie ein Dialogfeld "Ausführen" öffnen msconfig
und die Startprogramme eingeben und anzeigen, manuell zum Installationsverzeichnis navigieren C:\Program Files\{your program}
oder versuchen, das gewünschte Programm anhand der Ausführung zu ermitteln Prozesse im Task-Manager. 9 mal von 10 wird dies zum Erfolg führen.
Damit dies funktioniert, muss der Benutzer die Anwendung zuvor ausgeführt und anschließend ordnungsgemäß abgemeldet haben, damit explorer.exe die Möglichkeit erhält, den aktualisierten Infobereichsverlauf in die Registrierung zu schreiben. Bei einer nachfolgenden Anmeldung sollte das Skript das Programm erfolgreich im Verlauf finden und seine Einstellung so aktualisieren, dass sie immer angezeigt wird.
Sie können das Skript zum Debuggen auch manuell über eine PowerShell-Eingabeaufforderung ausführen. Sie MÜSSEN jedoch explorer.exe ('taskkill / f / im explorer.exe') beenden, bevor Sie es ausführen. Andernfalls wird Ihr Update vom explorer nicht angezeigt und überschrieben es, wenn es aufhört.
Ich nehme keine Anerkennung für diesen Prozess. Ich habe es nicht geschrieben, ich habe es nur gefunden. Gutschrift für das Drehbuch geht an Micah Rowland . Der Kredit für den GPO-Prozess geht an Geoff Kendal