Как стать автором
Обновить

Комментарии 11

2022 год на дворе, в скриншотах Windows Vista и CMD-костылизация

Пингующийся хост не гарантия, что он к себе по административной шаре пустит.

Создавать папки в корне диска С:\ на каждый чих вместо служебных папок для этого предназначенных = варварство.

Использование групповых политик в данном случае наиболее гибкое, простое и наименее трудозатратное, безкостыльное решение.

Статью нужно доработать на кейс с рабочей группой, без домена :)

Доброго времени суток. Спасибо за критику. Год хоть и 2022, а на некоторых госпредприятиях можно и Windows 98 встретить=)(скрины взяты прямо с сайта microsoft, уж не обессутьте).

Это альтернативный вариант для тех, кому не хочется засорять контроллер домена лишними политиками, их настройками и грузить сеть постоянными обращениями к шаре, где лежит exe-шник с конфигом. Поставил один раз на нужные машины и забыл, до тех пор пока машину не переустановишь. Сами все подгрузят из своих недр, даже если сети не будет.

А что касается диска С:, если это так принципиально в корень что-либо пихать лишнее, никто не мешает изменить путь и указать, например, Program files. Про допуск по административной шаре, то возможно не лишним будет проверка доступности, но обычно для администратора домена шара на машины пользователей доступна, а если нет, то тогда GPO точно ваш вариант.

Для машин не в сети все также делается один раз:

  1. Копируем папку с bginfo на машину не в сети.

  2. Запускаем батник с одной строкой, который запишет переменную в реестр в ветку автозагрузки:

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Bginfo /t REG_SZ /d "C:\BGInfo\Bginfo64.exe C:\BGInfo\conf-bginfo.bgi /NOLICPROMPT /TIMER:0" /f

в скриншотах Windows Vista и CMD-костылизация

Лично у меня до сих пор в продакшне ХР имеется. Так что в висте ничего страшного нет.
Ну и cmd тоже используется для не слишком сложных скриптов, где не нужно какую-то сложную логику реализовывать и данные парсить.

Расшаривание корня диска, да еще и на запись - это вообще как и зачем?! За такие "костыли" надо бить по рукам, а ответственного за сие непотребство - макать головой в горячий капуччино!

Доступ к диску по умолчанию закрыт, для этого нужно иметь административные привилегии.

никто ничего дополнительно здесь не расшаривает, всё уже за вас расшарено по умолчанию. Госдеп бдит. Stay tuned.

https://en.wikipedia.org/wiki/Administrative_share

А зачем что-то устанавливать? Выложил на файловый сервер, засунул в логон-скрипт — и всё.

Допустим это ноутбук, выдернули его из сети и всё, ничего не подгрузит. А так на нем все уже лежит и грузится без проблем локально через автозагрузку.

Ну останется значит старое инфо на десктопе.

DesktopInfo - думаю, лучшая замена bginfo.

Еще есть O&O DeskInfo, но он не такой богатый возможностями.

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$code = @'
    using System.Runtime.InteropServices;
    namespace Win32{
     public class Wallpaper{
        [DllImport("user32.dll", CharSet=CharSet.Auto)]
         static extern int SystemParametersInfo (int uAction , int uParam , string lpvParam , int fuWinIni) ;
         public static void SetWallpaper(string thePath){
            SystemParametersInfo(20,0,thePath,3);
         }
    }
 }
'@
add-type $code


$message=""
$message+="ComputerName:" + $env:COMPUTERNAME + [Environment]::NewLine
$message+="PROCESSOR_IDENTIFIER:" + $env:PROCESSOR_IDENTIFIER + [Environment]::NewLine
$message+="IP Address(es): "+(Get-NetIPConfiguration).IPv4Address.IpAddress + [Environment]::NewLine

$currentWallpaperPath = (Get-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name Wallpaper).Wallpaper
$width = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width
$height = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height
$proposedSize = New-Object System.Drawing.Size ([int]$width,[int]$height)

$fontStyle = "Calibri"
$fontSize = 16

$textfont = New-Object System.Drawing.Font ($fontStyle,$fontSize,[System.Drawing.FontStyle]::Regular)
$textBrush = New-Object Drawing.SolidBrush ([System.Drawing.Color]::White)

$bginfoPath = "$ENV:HOMEPATH\Pictures\bginfo.jpg"
$wallpaper= "$ENV:HOMEPATH\Pictures\wallpaper_original.jpg"
if (!(test-path $wallpaper)) { write-host "123"; Copy-Item $currentWallpaperPath $wallpaper }

$srcBmp = [System.Drawing.Bitmap]::FromFile($wallpaper)
$bmp = New-Object System.Drawing.Bitmap ($srcBmp,$width,$height)
$graphics = [System.Drawing.Graphics]::FromImage($bmp)
$graphics.TextRenderingHint = [System.Drawing.Text.TextRenderingHint]::AntiAlias
$srcBmp.Dispose()

$messageSize = [System.Windows.Forms.TextRenderer]::MeasureText($message,$textfont,$proposedSize)
$rec = New-Object System.Drawing.RectangleF (($width - $messageSize.Width - 20),20,($messageSize.Width + 20),$messageSize.Height)
$graphics.DrawString($message,$textfont,$textBrush,$rec)

$bmp.Save($bginfoPath,[System.Drawing.Imaging.ImageFormat]::Jpeg)

Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name wallpaperstyle -Value 2
Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name TileWallpaper -Value 0

[Win32.Wallpaper]::SetWallpaper((Get-Item $bginfoPath).FullName)

Пользуюсь только вот этим, на экран добавляется всё что может получить PoSH, в автозагрузке у пользователей powershell.exe bginfo.ps1

Честно говоря, набросал по быстрому, потырив куски кода у AWS https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch-download.html

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории