나는 온라인으로 검색하고 실제로 이것을 무작위로 발견했습니다.
간단히 말해 PowerShell (스크립트 제공)과 GPO의 조합입니다.
http://4sysops.com/archives/forcing-notification-area-icons-to-always-show-in-windows-7-or-windows-8/
간단히 말해 다음을 포함하는 PowerShell 스크립트를 만듭니다.
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
}
}
선택한 이름을 사용하여 ps1 파일로 저장하십시오.
그룹 정책 관리 MMC를 엽니 다. 선택한 그룹 정책 개체를 선택하고 마우스 오른쪽 단추를 클릭 한 후 편집을 선택하십시오. 편집기에서 사용자 구성> Windows 설정> 스크립트> 로그온으로 이동하여 "디스플레이 특성"을 클릭하십시오. PowerShell 탭으로 이동하여 파일보기를 클릭하십시오.
방금 연 탐색기 창에 방금 만든 스크립트를 복사 한 다음 창을 닫으십시오.
로그인 스크립트 속성 창에서 새 PowerShell 스크립트를 추가하고 스크립트 이름에 사용한 스크립트 이름 (예 : NotifyIcon.ps1)을 입력 한 다음 매개 변수에 프로그램 이름 (대소 문자 구분)을 입력하십시오. 사용할 설정으로 :
0 = 알림 만 표시 1 = 아이콘 및 알림 숨기기 2 = 아이콘 및 알림 표시 <--- 필요한 알림
예를 들어, RealVNC 서버가 항상 나타나도록하려면 다음을 입력하십시오.
winvnc4.exe 2
paramenters로
실행 대화 상자 열기 msconfig
및 시작 프로그램 입력 및보기, 수동으로 설치 디렉토리 탐색 C:\Program Files\{your program}
또는 실행중인 프로그램을보고 원하는 프로그램 일치 와 같은 몇 가지 방법으로 실행 파일 이름을 찾을 수 있습니다. 작업 관리자의 프로세스. 10 회 중 9 회 성공하면 성공합니다.
이 기능을 사용하려면 사용자가 이전에 응용 프로그램을 실행 한 다음 적절히 로그 아웃해야 explorer.exe가 업데이트 된 알림 영역 기록을 레지스트리에 쓸 수 있습니다. 이후에 로그인 할 때 스크립트는 기록에서 프로그램을 성공적으로 찾은 다음 항상 표시되도록 설정을 업데이트해야합니다.
PowerShell 프롬프트에서 스크립트를 수동으로 실행하여 디버깅 할 수도 있지만 실행하기 전에 반드시 explorer.exe ( 'taskkill / f / im explorer.exe')를 종료해야합니다. 그렇지 않으면 탐색기에서 업데이트를 볼 수 없으므로 덮어 씁니다. 종료되면
이 과정에 대한 크레딧은 없습니다. 나는 그것을 쓰지 않고 방금 찾았습니다. 스크립트에 대한 크레딧은 Micah Rowland 로갑니다 . GPO 프로세스에 대한 크레딧이 Geoff Kendal로 이동