Полезные скрипты

Всем нам приходилось сталкиваться с решением нестандартных задач, таким как обход групповых политик или же ограничение прав пользователя. Ниже приведу несколько, на мой взгляд полезных, скриптов. Кто-то, возможно, сочтет это ненужной и даже вредной информацией 🙂

1. Блокировка диспетчера задач.
Этот reg-файл позволяет запретить вызов taskmgr.exe 

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem]
"DisableTaskMgr"=""

2. Обход экранной заставки.
Часто администраторы домена, помешенные на безопасности, вводят политику блокировки рабочего стола при неактивности пользователя. Допустим что стоит блокировка через 5 минут. Не факт, что пользователь неактивен, он мог просто отвлечься на телефонный звонок и блокировка вызовет негодование (нужна информация с экрана для диалога). Тут предлагаю использовать VBS-скрипт, помещаемый в автозагрузку. Он не дает выполнить блокировку, имитируя нажатие пользователем клавиши NUMLOCK:

t=4 ' минуты
set shell = WScript.CreateObject("WScript.Shell")
while true : shell.SendKeys "{NUMLOCK}{NUMLOCK}" : WScript.Sleep t*60000 : wend

3. Массовая расстановка ярлыков пользователям AD.
Иногда возникает необходимость всем пользователям домена или его определенной группы выполнить добавления ярлыка на рабочий стол. Для выполнения этой задачи, как вариант, можно прописать в логон-скрипте следующий код (VBS)

Option Explicit
Dim oShell, oShortCut, sDeskTopPath
Set oShell = CreateObject("Wscript.Shell")
sDeskTopPath = oShell.SpecialFolders("AllUsersDesktop")
Set oShortCut = oShell.CreateShortcut(sDeskTopPath & "Имя ярлыка.lnk")
oShortCut.TargetPath = "\путь к размещению"
oShortCut.Save

4. Подключение сетевых дисков VBS-скриптом.
Приведенный ниже скрипт выполняет подключение сетевых дисков, при условии, что текущий пользователь имеет доступ к ресурсу:

Set objShell = CreateObject("WScript.Shell") 
Set objNetwork = CreateObject("WScript.Network") 
Set CheckDrive = objNetwork.EnumNetworkDrives()
' мапируем диски пользователя
objNetwork.MapNetworkDrive "t:", "\серверdocum" ' документы служебные
objNetwork.MapNetworkDrive "y:", "\серверpub"   ' документы общие
objNetwork.MapNetworkDrive "w:", "\серверftp" ' дистрибутивы
' завершили мапирование дисков пользователя

5. Сбор информации об установленном ПО и сохранение ее в файл  VBS-скриптом.
Приведенный ниже скрипт собирает информацию о ПО, имени пользователя, имени ПК и дате установки ПО:

' путь, где будет создан файл с информацией о приложениях
strPath = strRemotePath
strComputer = "localhost" ' Проверяем локальный компьютер
' Запускаем процедуру сбора информации
GetInstalledSoftware()
Sub GetInstalledSoftware()
On Error Resume next
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & _
strComputer & "rootdefault:StdRegProv")
If Err <> "0" Then
Exit Sub
End If
' Путь к разделу реестра Uninstall, содержащему информацию об установленных компонентах
unKeyPath = "SoftwareMicrosoftWindowsCurrentVersionUninstall"
unValueName = ("DisplayName")
objReg.EnumKey HKLM, unKeyPath, arrSubKeys
i=0
For Each Subkey in arrSubKeys
objDictionary2.Add i, unKeyPath & ""& subkey & (Enter)
i=i+1
Next
pcName = "SYSTEMCurrentControlSetControlComputerNameActiveComputerName"
pcNameValueName = "ComputerName"
userPath = "SoftwareMicrosoftWindows NTCurrentVersionWinlogon"
userValueName = "DefaultUserName"
objReg.GetStringValue HKLM,pcName,pcNameValueName,pcValue
objReg.GetStringValue HKLM,userPath,userValueName,userValue
strFileName = UserValue & "_" & "On" & "_" & PCValue & "_"& "Software" _
Set objTextFile2 = objFSO.OpenTextFile(strPath & strFileName, ForWriting, True)
objTextFile2.WriteLine(vbCRLF & _
"Current Installed Software " & vbCRLF & Time & vbCRLF & Date _
& vbCRLF & "Software For:" & "" & userValue & vbCRLF & "On System:" _
& "" & pcValue & vbCRLF)
For Each objItem in objDictionary2
strKeyPath = objDictionary2.Item(objItem)
objReg.GetStringValue HKLM ,strKeyPath, unValueName, strValue
objTextFile2.WriteLine (strValue)
If Err Then
objDictionary2.Remove(objItem)
End If
Next
End Sub
wscript.Quit

Пункты 4 и 5 можно объединить в один скрипт.

6. Сохранение пароля (быстрый вход) в SAP ERP  системах.
Часто встречающаяся софтина в государственных и крупных коммерческих структурах. По роду деятельности тоже ей пользуюсь и утомляет постоянный ввод различных комбинаций логина и пароля. Для упрощения задачи, после того как в логон-группах созданы записи, применение ниже приведенного скрипта позволяет создавать ярлыки на системы с сохранением учетной записи и соответствующего пароля.
REG-файл:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareSAPSAPShortcut]
[HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity]
"EnablePassword"="1"

7. Остановка нежелательного процесса в ОС Windows.
Иногда возникает необходимость прибить процесс из командной строки и через какое-то время его запустить.. Для этой цели я применяю cmd  файл следующего содержания:

@Echo Off
SetLocal EnableExtensions
Set ProcessName=javaw.exe
TaskList /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%"
if %ErrorLevel% ==0  TASKKILL /IM javaw.exe /f
echo Процесс контроля печати остановлен. До его запуска осталось:
:wait...
TIMEOUT /T 20
startjobprn.cmd

Через 20 секунд происходит запуск прибитого процесса. Здесь выведено запуском посредством отдельного командного файла (можно объеденить)

8. Запрет и разрешение запуска Internet Explorer.
Ниже приведенные два REG-файла отличаются только наличием символа “-” перед именем раздела реестра. Первый запрещает,  второй снимает запрет.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsSaferCodeIdentifiers\0Paths{fc768d98-109c-4ac5-8e23-76e7576365bc}]
"LastModified"=hex(b):d2,2e,d8,5d,f9,3c,c8,01
"Description"=""
"SaferFlags"=dword:00000000
"ItemData"="C:\Program Files\Internet Explorer\iexplore.exe"
Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsSaferCodeIdentifiers\0Paths{fc768d98-109c-4ac5-8e23-76e7576365bc}]
"LastModified"=hex(b):d2,2e,d8,5d,f9,3c,c8,01
"Description"=""
"SaferFlags"=dword:00000000
"ItemData"="C:\Program Files\Internet Explorer\iexplore.exe"