Çevrimiçi arama yapıyordum ve aslında bunu rastgele buldum.
Uzun lafın kısası, PowerShell (komut dosyası sağlanan) ve GPO'nun bir kombinasyonu.
http://4sysops.com/archives/forcing-notification-area-icons-to-always-show-in-windows-7-or-windows-8/
Uzun hikaye, aşağıdakileri içeren bir PowerShell betiği oluşturun:
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
}
}
İstediğiniz adı kullanarak bir ps1 dosyası olarak kaydedin.
Grup İlkesi Yönetimi MMC'yi açın. Seçtiğiniz Grup İlkesi Nesnesini seçin, sağ tıklayın ve Düzenle'yi seçin. Editörde, Kullanıcı Yapılandırması> Windows Ayarları> Komut Dosyaları> Oturum Açma'ya gidin ve "Görüntü Özellikleri" ni tıklayın. PowerShell sekmesine gidin ve Dosyaları Görüntüle'yi tıklayın.
Az önce oluşturduğunuz komut dosyasını yeni açılan Explorer penceresine kopyalayın ve pencereden kapatın.
Oturum açma komut dosyası özellikleri penceresinde, yeni bir PowerShell komut dosyası ekleyin, komut dosyası adına, kullandığınız komut dosyasının adını girin (örnek: NotifyIcon.ps1) ve ardından parametrelerde, program adını (büyük / küçük harfe duyarlı!) kullanılacak ayara göre:
0 = sadece bildirimleri göster 1 = simgeyi ve bildirimleri gizle 2 = simgeyi ve bildirimleri göster <--- İhtiyacınız olan
Örneğin, her zaman görünmesi için RealVNC sunucusuna ihtiyacınız varsa, şunu girersiniz:
winvnc4.exe 2
Paramenterler olarak
Çalıştır iletişim kutusunu açma msconfig
ve başlangıç programlarına yazma ve arama, yükleme dizinine el ile gezinme C:\Program Files\{your program}
ya da çalışan programa bakarak istediğiniz programı eşleştirmeye çalışma gibi yürütülebilir dosyanın adını birkaç farklı yolla öğrenebilirsiniz. Görev Yöneticisi'nde işlemler. Bu 10 üzerinden 9 kez başarı ile sonuçlanacaktır.
Bunun çalışması için, kullanıcının uygulamayı daha önce çalıştırması ve sonra düzgün bir şekilde oturumu kapatmış olması gerekir; böylece explorer.exe, güncelleştirilmiş bildirim alanı geçmişini Kayıt Defteri'ne yazma şansı elde eder. Bir sonraki oturum açmada, komut dosyasının programı geçmişte başarıyla bulması ve ayarlarını her zaman gösterilecek şekilde güncelleştirmesi gerekir.
Komut dosyasını hata ayıklamak için bir PowerShell isteminden el ile çalıştırmayı da deneyebilirsiniz, ancak çalıştırmadan önce explorer.exe'yi ('taskkill / f / im explorer.exe') öldürmeniz gerekir, aksi takdirde explorer güncellemenizi görmez ve üzerine yazılır bıraktığında.
Bu işlem için kredi almıyorum. Yazmadım, yeni buldum. Senaryo için kredi Micah Rowland'a gidiyor . GPO süreci için kredi Geoff Kendal'a gidiyor