Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
Аватара пользователя
Yevgeniy K
Здравствуйте! Подскажите пожалуйста как через групповые политики закрепить значок MyChat Client для более удобного получения уведомлений? Вручную не хотелось бы этого делать на каждой машине.
Снимок.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Алексей Пикуров
Я не знаю, как это делается. Вы знаете?
Аватара пользователя
Yevgeniy K
Вчера разобрался с этим вопросом. Вот вариант как реализовать через GPO:

Откройте MMC управления групповой политикой. Выберите выбранный объект групповой политики, щелкните правой кнопкой мыши и выберите «Изменить». В редакторе перейдите в «Конфигурация пользователя»> «Настройки Windows»> «Сценарии»> «Вход в систему» ​​и нажмите двойным щелчком на "Вход в систему". Перейдите на вкладку "Сценарии PowerShell" и нажмите «Просмотр файлов». Скопируйте туда скрип, который я вложил (разархивируйте сначала). Далее нажимайте Добавить - Обзор и выбирайте скрипт. Параметры сценария задавать не надо. В принципе всё, можно распространять эту политику на необходимую группу. При входе пользователя в систему экран мигнет на секунду и значок появится в области уведомлений. Данную политику можно применять как единоразово, так и при каждом входе пользователя.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Алексей Пикуров
Скрипт, конечно, хак :)

Пара вопросов.
1. Зачем пауза в 30 секунд на старте?
2. Я попробовал его запустить и он не отработал корректно

powershell -executionpolicy RemoteSigned -file trayicon_v2.ps1 > out.txt

Исчезла панель задач и не появилась. Пришлось запускать explorer.exe вручную.

Результат работы скрипта:
Код: Выделить всё
Item Found with mcclient.exe in item starting with byte 50860
Item Found with mcclient.exe in item starting with byte 57420
Item Found with mcclient.exe in item starting with byte 54140
Item Found with mcclient.exe in item starting with byte 36100
ps : Не удалось найти процесс с именем "explorer". Убедитесь, что имя процесса введено правильно, и повторите вызов командлета.
E:\temp\trayicon_v2.ps1:108 знак:1
+ ps explorer | kill
+ ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (explorer:String) [Get-Process], ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
 
Item Found with mcclient.exe in item starting with byte 37740
ps : Не удалось найти процесс с именем "explorer". Убедитесь, что имя процесса введено правильно, и повторите вызов командлета.
E:\temp\trayicon_v2.ps1:108 знак:1
+ ps explorer | kill
+ ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (explorer:String) [Get-Process], ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
 
Item Found with mcclient.exe in item starting with byte 29540
ps : Не удалось найти процесс с именем "explorer". Убедитесь, что имя процесса введено правильно, и повторите вызов командлета.
E:\temp\trayicon_v2.ps1:108 знак:1
+ ps explorer | kill
+ ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (explorer:String) [Get-Process], ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
 
Item Found with mcclient.exe in item starting with byte 59060
ps : Не удалось найти процесс с именем "explorer". Убедитесь, что имя процесса введено правильно, и повторите вызов командлета.
E:\temp\trayicon_v2.ps1:108 знак:1
+ ps explorer | kill
+ ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (explorer:String) [Get-Process], ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
 
Item Found with mcclient.exe in item starting with byte 19700
ps : Не удалось найти процесс с именем "explorer". Убедитесь, что имя процесса введено правильно, и повторите вызов командлета.
E:\temp\trayicon_v2.ps1:108 знак:1
+ ps explorer | kill
+ ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (explorer:String) [Get-Process], ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
 
Item Found with mcclient.exe in item starting with byte 34460
ps : Не удалось найти процесс с именем "explorer". Убедитесь, что имя процесса введено правильно, и повторите вызов командлета.
E:\temp\trayicon_v2.ps1:108 знак:1
+ ps explorer | kill
+ ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (explorer:String) [Get-Process], ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
Аватара пользователя
Алексей Пикуров
OS Windows 10, x64.
Аватара пользователя
Yevgeniy K
Добавил паузу в 30 секунд для того, чтобы при старте MyChat успел загрузиться. Пробовал без паузы, но как то некорректно отрабатывает при загрузке. А пробовали просто запустить с проводника?
область уведомлений.jpg


У меня без проблем отрабатывает и у доменных пользователей тоже. Операционки разные от win 7 до 10. У меня вот так (тоже 64 бита):
2.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Алексей Пикуров
Пробовал из контекстного меню, работает так же, панель задач исчезает напрочь, пока вручную не запустишь процесс explorer.exe, ошибки те же валятся в консоль.

Вы сами написали этот скрипт или нашли его где-то? Если не сами, то можно увидеть первоисточник, где поясняется, что делается в скрипте?
Аватара пользователя
Yevgeniy K
Вот источники:
https://4sysops.com/archives/forcing-no ... windows-8/
https://tmintner.wordpress.com/2011/07/ ... bbit-hole/
Можно воспользоваться тем скриптом, что указан по ссылке (я брал другой с комментов) он тоже работает у меня на win 10
Код: Выделить всё
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 - 65 + 13) % 26 + 65)
        return $bytRot
    }
    elseif($byteToRot -gt 96 -and $byteToRot -lt 123)
    {
        $bytRot = $($($byteToRot - 97 + 13) % 26 + 97)
        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
    }
}
Аватара пользователя
Yevgeniy K
ProgramName: mcclient.exe
The setting:2