मैं ऑनलाइन खोज कर रहा था और वास्तव में यह अनियमित पाया।
लंबी कहानी, पॉवरशेल (प्रदान की गई स्क्रिप्ट) और जीपीओ का संयोजन।
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 खोलें। अपनी चुनी हुई ग्रुप पॉलिसी ऑब्जेक्ट का चयन करें, राइट क्लिक करें और एडिट चुनें। संपादक में, उपयोगकर्ता कॉन्फ़िगरेशन> विंडोज सेटिंग्स> लिपियों> लॉगऑन पर जाएं और "प्रदर्शन गुण" पर क्लिक करें। PowerShell टैब पर जाएं और फ़ाइलें देखें पर क्लिक करें।
आपके द्वारा अभी-अभी खोली गई एक्सप्लोरर विंडो में बनाई गई स्क्रिप्ट को कॉपी करें और फिर विंडो से बाहर कर दें।
लॉगिन स्क्रिप्ट गुण विंडो में, स्क्रिप्ट नाम में एक नया PowerShell स्क्रिप्ट जोड़ें, आपके द्वारा उपयोग की गई स्क्रिप्ट का नाम दर्ज करें (उदाहरण: NotifyIcon.ps1), और फिर मापदंडों में, प्रोग्राम का नाम दर्ज करें (केस सेंसिटिव!) का पालन करें। उपयोग करने के लिए सेटिंग द्वारा:
0 = केवल सूचनाएँ दिखाएँ 1 = छिपा आइकन और सूचनाएं 2 = शो आइकन और सूचनाएं <--- जिसकी आपको आवश्यकता है
उदाहरण के लिए, यदि आपको हमेशा दिखने के लिए RealVNC सर्वर की आवश्यकता है, तो आप दर्ज करेंगे:
winvnc4.exe 2
सूत्रधार के रूप में
आप एक जोड़े में निष्पादन योग्य का नाम अलग-अलग तरीकों से पता कर सकते हैं, जैसे कि एक रन डायलॉग बॉक्स खोलना और टाइप करना msconfig
और स्टार्टअप प्रोग्राम को देखना, मैन्युअल रूप से इंस्टॉलेशन डायरेक्टरी में नेविगेट करना C:\Program Files\{your program}
, या रनिंग को देखकर वांछित प्रोग्राम से मिलान करने का प्रयास करना। कार्य प्रबंधक में प्रक्रियाएं। 10 में से 9 बार इसके परिणामस्वरूप सफलता मिलेगी।
इसे काम करने के लिए, उपयोगकर्ता को पहले आवेदन चलाना चाहिए, और फिर ठीक से लॉग आउट करना चाहिए, ताकि एक्सप्लोरर को अद्यतन अधिसूचना क्षेत्र इतिहास को रजिस्ट्री में लिखने का मौका मिले। बाद के लॉगिन पर, स्क्रिप्ट को सफलतापूर्वक इतिहास में कार्यक्रम का पता लगाना चाहिए, और इसकी सेटिंग को हमेशा दिखाने के लिए अपडेट करना चाहिए।
आप स्क्रिप्ट को PowerShell प्रॉम्प्ट से डिबग करने के लिए मैन्युअल रूप से चलाने का भी प्रयास कर सकते हैं, लेकिन आप इसे चलाने से पहले explorer.exe ('taskkill / f / im explorer.exe') को अवश्य मार दें, अन्यथा एक्सप्लोरर आपका अपडेट नहीं देखेगा, और इसे अधिलेखित कर देगा जब यह छोड़ देता है।
मैं इस प्रक्रिया का कोई श्रेय नहीं लेता। मैंने इसे नहीं लिखा, मैंने इसे पाया। स्क्रिप्ट का श्रेय मीका रॉलैंड को जाता है । GPO प्रक्रिया का श्रेय ज्योफ केंडल को जाता है