मैं ऑनलाइन खोज रहा था और वास्तव में यह यादृच्छिक रूप से पाया।
लंबी कहानी लघु, पावरशेल (स्क्रिप्ट प्रदान की गई) और जीपीओ का संयोजन। अपनी पसंद के नाम का उपयोग कर एक PS1 फाइल के रूप में
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[]] [email protected]()
$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
}
}
यह सहेजें:
http://4sysops.com/archives/forcing-notification-area-icons-to-always-show-in-windows-7-or-windows-8/
लंबी कहानी, एक PowerShell स्क्रिप्ट निम्नलिखित युक्त पैदा करते हैं।
समूह नीति प्रबंधन एमएमसी खोलें। अपने चुने हुए समूह नीति ऑब्जेक्ट का चयन करें, राइट क्लिक करें और संपादित करें का चयन करें। संपादक में, उपयोगकर्ता कॉन्फ़िगरेशन> विंडोज सेटिंग्स> स्क्रिप्ट> लॉगऑन पर नेविगेट करें और "गुण प्रदर्शित करें" पर क्लिक करें। PowerShell टैब पर जाएं और फ़ाइलें देखें पर क्लिक करें।
कॉपी स्क्रिप्ट तुम सिर्फ Explorer विंडो कि बस पास खोला और फिर खिड़की से बाहर में बनाया।
लॉगिन स्क्रिप्ट गुण विंडो में, स्क्रिप्ट नाम में एक नई पावरशेल स्क्रिप्ट जोड़ें, आपके द्वारा उपयोग की जाने वाली स्क्रिप्ट का नाम दर्ज करें (उदाहरण: NotifyIcon.ps1), और फिर पैरामीटर में, प्रोग्राम नाम दर्ज करें (केस ! संवेदी) की स्थापना के बाद उपयोग करने के लिए:
0 = केवल शो नोटिफिकेशन आइकन 1 = छिपाने और सूचनाएं 2 = शो आइकन और नोटिफिकेशन < --- एक आप की जरूरत
उदाहरण के लिए, यदि आप RealVNC की जरूरत सर्वर हमेशा प्रकट करने के लिए, आप लिखेंगे:
winvnc4.exe 2
paramenters
आप इस तरह के एक रन संवाद बॉक्स और टाइपिंग msconfig खोलने और स्टार्टअप प्रोग्राम को देख, मैन्युअल रूप से नेविगेट स्थापना निर्देशिका के लिए सी के रूप में एक जोड़े को अलग अलग तरीकों से, में निष्पादन का नाम पता कर सकते हैं के रूप में
: \ प्रोग्राम फ़ाइलें {आपका प्रोग्राम}, या कार्य प्रबंधक में चल रही प्रक्रियाओं को देखकर वांछित प्रोग्राम से मिलान करने का प्रयास कर रहा है। 10 में से 9 बार इससे सफलता मिलेगी।
इस काम के लिए, उपयोगकर्ता को पहले एप्लिकेशन चलाया जाना चाहिए था, और उसके बाद ठीक से लॉग आउट होना चाहिए, ताकि explorer.exe को अद्यतन सूचना क्षेत्र इतिहास रजिस्ट्री में लिखने का मौका मिले। बाद के लॉगिन पर, स्क्रिप्ट को सफलतापूर्वक इतिहास में प्रोग्राम का पता लगाना चाहिए, और हमेशा दिखाने के लिए अपनी सेटिंग अपडेट करना चाहिए।
आप पावरशेल प्रॉम्प्ट से मैन्युअल रूप से स्क्रिप्ट को चलाने का प्रयास भी कर सकते हैं, लेकिन आपको इसे चलाने से पहले explorer.exe ('taskkill/f/im explorer.exe') को मारना होगा, अन्यथा एक्सप्लोरर आपके अपडेट को नहीं देख पाएगा , और इसे छोड़ने पर इसे ओवरराइट कर देगा।
मैं इस प्रक्रिया के लिए कोई क्रेडिट ले लो। मैंने इसे नहीं लिखा, मैंने अभी पाया। लिपि के लिए क्रेडिट मीका रोवलैंड जाता है। जीपीओ प्रक्रिया के लिए क्रेडिट ज्योफ केंडल
पर्याप्त नहीं प्रतिष्ठा के लिए चला जाता है, मूल लेखकों से जोड़ने के लिए शीर्ष पर एक के अपवाद के साथ।
देते सूचना क्षेत्र माउस "हमेशा दिखाई" स्थिति एक उपयोगकर्ता विकल्प टास्कबार गुण संवाद के माध्यम से किया है। मैं आश्चर्यचकित हूं अगर विंडोज़ ने प्रोग्राम प्रोग्रामिक इंटरफेस का खुलासा किया। – Jon
हां, और आम तौर पर मैं इसे उपयोगकर्ता पर मजबूर करने की कोशिश नहीं करता। लेकिन यह महत्वपूर्ण है कि वे एक स्क्रीनशॉट बनाएं जो निष्क्रिय आइकन विंडो द्वारा कवर न हो। – Drake
फिर वे "कस्टमाइज़ करें ..." में जा सकते हैं और कह सकते हैं कि वे चाहते हैं कि वह आइकन हर समय दिखाई दे। –