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

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#1
Здесь собираем команды и простые скрипты Batch, VBScript, Powershell,
имеющие специфику безопасности:

- проверка, сбор информации и диагностика системы;
- восстановление после заражения;
- резервное копирование;
- усиление защиты.

Все скрипты по мере добавления будут сгруппированы в первом посте.

Вы можете задать вопрос по любому коду, а также выложить свой, создав новую тему в этом разделе.

Каталог удобняшек:
- Восстановление и лечение
Восстановление файловых ассоциаций - Windows XP (CMD, Reg) Windows XP, 7, 8 (CMD, Reg)
Восстановление шрифтов после сбоя (крякозябры в окнах Windows вместо русского текста) (CMD)
Команды консоли восстановления (Windows Recovery Console)

- Информация о системе
Определение версии ОС, разрядности, сборки, семейства операционной системы, разрядности среды, из которой запущен Batch
Просмотр последнего отчета о проверке диска (chkdsk) (Powershell)
GetUserBySID: Определение имени учетной записи пользователя по указанному идентификатору безопасности SID (VBScript)

- Интерфейс, удобство работы и быстрый запуск
Прыжок в ветку реестра, имя которой скопировано в буфер (CMD + exe)
RUN Команды Windows, RunDll32

- Проверка системы на ошибки/уязвимости

- Права доступа
Как сменить владельца папки или файла (Hands, CMD, Reg, AVZ)

- Резервное копирование
Быстрое резервное копирование данных с помощью Robocopy в Windows 7 (CMD)
Создание контрольной точки восстановления системы

- Реестр
reg.exe и основы работы с реестром (CMD)

- Сеть

- Очистка
Удаление временных файлов планировщиком по расписанию c учетом критериев даты создания/изменения (CMD, VBScript)
Как удалить неудаляемые файлы из корзины?
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#2
GetUserBySID: Определение имени учетной записи пользователя по указанному идентификатору безопасности SID



VB.NET:
on error resume next
SID = inputBox("Введите SID: ", "GetUserBySID")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objAccount = objWMIService.Get("Win32_SID.SID='" & SID & "'")
if err <> 0 then
    msgbox "SID не найден!"
else
    user = objAccount.AccountName
    domain = objAccount.ReferencedDomainName
    ret = inputbox("SID: " & SID & vblf & _
      "Binary: " & Join(objAccount.BinaryRepresentation, ",") & vblf & _
      "Domain: " & Domain & vblf & _
      "UserName: " & user, "GetUserBySID - ответ", _
      domain & "\" & user)
end if

Появится диалоговое окно, куда можно ввести например:



Посмотреть вложение GetUserBySID.zip
Посмотреть вложение GetSIDByUser3.zip
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#3
Определение:

  • версии,
  • разрядности,
  • сборки,
  • семейства операционной системы,
  • разрядности среды, из которой запущен Batch

CMD/BATCH:
@echo off
SetLocal EnableExtensions

call :GetSystemVersion "OSVer" "Core" "Build" "Family" "EnvironCore"

echo Версия ОС:      %OSVer%
echo Рязрядность ОС: %Core%
echo Сборка:         %Build%
echo Семейство:      %Family%
echo Разрядность среды запуска Batch: %EnvironCore%

pause
Exit /B

:GetSystemVersion [OSVersion] [OSCore] [OSBuild] [OSFamily] [EnvironmentCore]
:: Определить версию ОС
:: %1-исх.Переменная для хранения названия ОС
:: %2-исх.Переменная для хранения разрядности ОС
:: %3-исх.Переменная для хранения версии сборки ОС
:: %4-исх.Переменная, идентифицирующая семейство ОС (9x, NT, Vista)
:: %5-исх.Переменная, идентифицирующая разрядность среды, из-под которой запущен скрипт
  Set "xOS=x64"& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set "xOS=x32"
  set "%~2=%xOS%"
  set "%~5=x32"& if "%xOS%"=="x64" echo "%PROGRAMFILES%" |>nul find "x86" || set "%~5=x64"
  set "_key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
  For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "CurrentBuildNumber"^|Find "CurrentBuildNumber"') do set "%~3=%%~b"
  For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "CurrentVersion"^|Find "CurrentVersion"') do set "_ver=%%~b"
  For /f "tokens=2*" %%a In ('Reg.exe query "%_key%" /v "ProductName"^|Find "ProductName"') do set "%~1=%%~b"
  if "%_ver:~0,1%"=="6" (set "%~4=Vista") else (set "%~4=NT")
Exit /B
Посмотреть вложение SysVersion.zip
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#4
Создание контрольной точки восстановления системы

Программно:

В Windows Vista, 7, 8 необходимо запускать в режиме повышенных привилегий.

Код VBScipt:
VB.NET:
GetObject("winmgmts:\\.\root\default:Systemrestore").CreateRestorePoint "SafeZone.cc", 10, 100
код Batch:
CMD/BATCH:
WMIC /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "SafeZone.cc", 100, 10
Код Powershell:
PowerShell:
$sysrestore = [wmiclass]"\\.\root\default:systemrestore"
$sysrestore.CreateRestorePoint("MyRestorePoint", 0, 100)
Вручную: через апплет "Свойства системы":
открыть окно - rundll32 shell32.dll,Control_RunDLL sysdm.cpl,,4
Как создать новую контрольную точку восстановления и очистить предыдущие

Восстановление состояния системы до последней контрольной точки

Программно:
VB.NET:
Dim LastRP
Set SRP = GetObject("winmgmts:\\.\root\default").InstancesOf("SystemRestore")
For Each objRP In SRP
  LastRP = objRP.SequenceNumber
Next
If Not IsEmpty(LastRP) Then
  GetObject("winmgmts:\\.\root\default:SystemRestore").Restore LastRP
  Set OS = GetObject("winmgmts:{(Shutdown)}\\.\root\cimv2").ExecQuery("SELECT * FROM Win32_OperatingSystem WHERE Primary = True")
  For Each objOS In OS
    objOS.Reboot
  Next
End If
Вручную через служебную программу rstrui.exe
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#5
Рекурсивный DIR /X

Используется для получения имени файла/папки в формате 8.3,
если другими способами не получается удалить/переименовать объект.

Выводит отчет в форматах Plain Text (DirX.txt) и CSV (DirX.csv) рекурсивно для текущего и всех подкаталогов,
начиная с места, откуда батник сам запущен.

Если отчет не был создан, запустите батник правым кликом "От имени Администратора".

Помните: некоторые объекты с некорректным именем можно удалить/переименовать,
добавив к полному имени файла! префикс \\?\
например:
Код:
rd "\\?\c:\temp\badfolder..\"
Этот способ отключает некоторые ограничения на операции с файловой системой.

Ссылки по теме:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
http://safezone.cc/threads/flystudi...obrazit-propavshee-soderzhimoe-fleshki.12352/
http://safezone.cc/threads/vosstanovlenie-dostupa-k-papkam-fajlam-so-specsimvolami-v-imeni.21291/

Код:
@echo off
SetLocal EnableExtensions
chcp 862 >NUL

set "Cur=%~dp0"
set "Cur=%Cur:~0,-1%"

set "log_txt=%Cur%\DirX.log"
set "log_csv=%Cur%\DirX.csv"

2>NUL del "%log_txt%"
2>NUL del "%log_csv%"

echo Type;Dir /X (8.3);Real Name;>>"%log_csv%"

call :DirRec "%Cur%" "%Cur%"

pause
exit /B

:DirRec [папка]
  For /F "skip=5 tokens=1-6" %%A in ('Dir /X /A /OS /-C "%~1" 2^>NUL') do (
    if "%%B" NEQ "File(s)" if "%%B" NEQ "Dir(s)" (
      if "%%C"=="<DIR>" (
        if "%%D" NEQ "." if "%%D" NEQ ".." (
          if "%%E"=="" (
            echo DIR  "%~1\%%D" "%~1\%%D">> "%log_txt%"
            echo DIR ;"%~1\%%D";"%~1\%%D">> "%log_csv%"
          ) else (
            echo DIR  "%~2\%%E" "%~1\%%D">> "%log_txt%"
            echo DIR ;"%~2\%%E";"%~1\%%D">> "%log_csv%"
          )
          call :DirRec "%~1\%%D" "%~2\%%E"
        )
      ) else (
          if "%%E"=="" (
            echo FILE "%~2\%%D" "%~1\%%D">> "%log_txt%"
            echo FILE;"%~2\%%D";"%~1\%%D">> "%log_csv%"
          ) else (
            echo FILE "%~2\%%E" "%~1\%%D">> "%log_txt%"
            echo FILE;"%~2\%%E";"%~1\%%D">> "%log_csv%"
          )
      )
    )
  )
Exit /B
DIR "H:\_CMD\_AntiHidden\1.." "H:\_CMD\_AntiHidden\1F85C~1"
DIR "H:\_CMD\_AntiHidden\1..\2.." "H:\_CMD\_AntiHidden\1F85C~1\2ECCD~1"
DIR "H:\_CMD\_AntiHidden\1..\2..\3.." "H:\_CMD\_AntiHidden\1F85C~1\2ECCD~1\3B2F7~1"
FILE "H:\_CMD\_AntiHidden\1..\2..\3..\PsExec.exe" "H:\_CMD\_AntiHidden\1F85C~1\2ECCD~1\3B2F7~1\PsExec.exe"
FILE "H:\_CMD\_AntiHidden\1..\Procmon.exe" "H:\_CMD\_AntiHidden\1F85C~1\Procmon.exe"
DIR "H:\_CMD\_AntiHidden\s" "H:\_CMD\_AntiHidden\s"
DIR "H:\_CMD\_AntiHidden\hs" "H:\_CMD\_AntiHidden\hs"
DIR "H:\_CMD\_AntiHidden\h" "H:\_CMD\_AntiHidden\h"
DIR "H:\_CMD\_AntiHidden\?" "H:\_CMD\_AntiHidden\D205~1"
DIR "H:\_CMD\_AntiHidden\autorun.inf" "H:\_CMD\_AntiHidden\autorun.inf"
DIR "H:\_CMD\_AntiHidden\autorun.inf\com1" "H:\_CMD\_AntiHidden\autorun.inf\com1"
DIR "H:\_CMD\_AntiHidden\autorun.inf\defence" "H:\_CMD\_AntiHidden\autorun.inf\defence"
DIR "H:\_CMD\_AntiHidden\\Dragokas.." "H:\_CMD\_AntiHidden\autorun.inf\DRAGOK~1"
FILE "H:\_CMD\_AntiHidden\DirX.csv" "H:\_CMD\_AntiHidden\DirX.csv"
FILE "H:\_CMD\_AntiHidden\Autorun_Folder_Del.cmd" "H:\_CMD\_AntiHidden\AUTORU~1.CMD"
FILE "H:\_CMD\_AntiHidden\AntiHidden_Light.cmd" "H:\_CMD\_AntiHidden\ANTIHI~1.CMD"
FILE "H:\_CMD\_AntiHidden\DirX" "H:\_CMD\_AntiHidden\DIRX-~1.LOG"
FILE "H:\_CMD\_AntiHidden\DirX2.cmd" "H:\_CMD\_AntiHidden\DirX2.cmd"
FILE "H:\_CMD\_AntiHidden\DirX.cmd" "H:\_CMD\_AntiHidden\DirX.cmd"
FILE "H:\_CMD\_AntiHidden\Anti_Hidden_fast_ua_v.1.5.1.cmd" "H:\_CMD\_AntiHidden\ANTI_H~1.CMD"
FILE "H:\_CMD\_AntiHidden\Anti_Hidden_fast_ru_v.1.5.1.cmd" "H:\_CMD\_AntiHidden\ANTI_H~3.CMD"
FILE "H:\_CMD\_AntiHidden\Anti_Hidden_fast_ru_v.1.6.cmd" "H:\_CMD\_AntiHidden\ANTI_H~2.CMD"

>>> Посмотреть вложение DirX2.zip <<<


В дополнение:

Исправление проблемы, когда не работает вывод коротких имен файлов Dir /X
Источник: techguy.org

Режим представления коротких имен файлов может быть отключен.
Тогда Вам не удастся получить имя в формате 8.3 командой DIR /X

Проверить это можно, введя команду:
CMD/BATCH:
fsutil behavior query disable8dot3
Чтобы снова включить этот режим, введите:

1) для XP:
CMD/BATCH:
fsutil behavior set disable8dot3 0
2) для Vista и выше:
CMD/BATCH:
fsutil behavior set disable8dot3 2
Напомню, что данный режим отображает альтернативные имена в формате 8.3 и будет удобен,
когда требуется работать с именами файлов и папок, имеющих:

Для автоматической подстановки и парсинга имен в формате 8.3. можно воспользоваться такой циклической конструкцией:

CMD/BATCH:
for /f "skip=5 tokens=4" %%? in ('dir /X /-C /A-D "c:\users\alex\desktop\*"') do echo %%?
Здесь я (имя пользователя: Alex) перечисляю у себя на рабочем столе (папка Desktop) все файлы (\*).
Вместо команды echo можно подставить любую другую, взаимодействующую с файлом формата 8.3.

Учитывайте, что эта команда выводит в конце 2 лишних строки.
CMD/BATCH:
@echo off
SetLocal EnableDelayedExpansion
:: Вот моя команда для вывода всех файлов с ключами
:: /X - формат 8.3.
:: /-C - убрать разделитель рядов объема файла
:: /A-D - отобразить все скрытые объекты, -D - исключить папки
:: \* - все объекты, вне зависимости от их имени
set dir_com=dir /X /-C /A-D "c:\users\alex\desktop\*"
:: Считаю кол-во строк в выводе команды DIR, отнимаю шапку и 2 последних строки
for /F %%? in ('%dir_com%^| find /C /V ""') do set Total=%%?& Set /A Total-=7&:: 7 = skip+2
:: Получаю вывод команды DIR, без учета ненужных строк
for /F "skip=5 tokens=4" %%? in ('%dir_com%') do Set /A C+=1& if !C! LEQ %Total% echo %%?
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#6
Шаблон батника из контекстного меню "Создать"

Автор: Koza Nozdri & Dragokas

CMD/BATCH:
@echo off
Chcp 866 >nul
  title  Пункт меню "Создать..."
  SetLocal EnableExtensions

ver |>NUL find "6." && if "%1" neq "Admin" call :elevate
chdir /d "%~dp0"

(
  echo @echo off
  echo SetLocal EnableExtensions EnableDelayedExpansion
  echo Chcp 866 ^>nul
  echo title text title
  echo cd /d "%%~dp0"
  echo.
  echo.
  echo.
  echo pause
  echo exit /B
) > "%~dp0new.bat"

md %systemdrive%\Windows\ShellNew 2>NUL
copy /y "%~dp0new.bat" %systemdrive%\Windows\ShellNew\
reg.exe add "HKCR\.bat\ShellNew" /ve /f
reg.exe add "HKCR\.bat\ShellNew" /v FileName /d New.bat /f
del /q "%~dp0new.bat"
cls
Echo Пункт создан,перезагрузите компьютер.
Echo Для выхода нажмите Enter
pause>nul
Exit /B

:Elevate
  Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"Admin","","runas",1 >"%~dp0Elevating.vbs"
  cscript.exe //nologo "%~dp0Elevating.vbs" "%~dpnx0"
  del "%~dp0Elevating.vbs"
Exit
CMD/BATCH:
@echo off
SetLocal EnableExtensions EnableDelayedEpansion
Chcp 866 >nul
title text title
cd /d "%~dp0"



pause
exit /B
Код:
@echo off
::Включаем режим выполнения команд без сообщений

SetLocal
:: Включение локализации изменений среды в пакетном файле
:: Чтобы изменение переменных в этом батнике не влияли на другие батники, запускаемые по цепочке.
:: Для быстрого обнуления всех переменных (особенно актуально для псевдо-массивов), используя команду EndLocal

SetLocal EnableExtensions
:: разрешение использовать дополнительных ключей команд (например FOR /F) и других защит от дурака,
:: например, переход в папку с пробелами без указания кавычек в пути (например CD My Tools)

SetLocal EnableDelayedEpansion
:: Возможность получить актуальное значение переменной внутри цикла или блока команд,
:: например указывая вместо %time% знаки восклицания !time!

Chcp 866 >nul
:: Включение кодировки 866 для того что бы русский текст не был кракозябрами в сценарии

title text title
:: Значение после первого слова title  будет отображаться в названии исполняемого пакетного файла

cd /d "%~dp0"
:: Переход в текущий каталог,сокращает код с параметрами типа del bat.bat вместо del %~dp0bat.bat
::То есть при работе с файлами в папке с bat сценарием не надо дописывать аргументы
:: И при этом вы не рискуете по ошибке запороть систему командой типа: del bat.bat
::Не имеющей в скрипте аргумента cd /d "%~dp0"

pause
:: До того как будет написана финальная версия кода команда pause будет полезная для выявления ошибок и багов
::Либо для принятия решения о доработке кода

exit /B
Выход из текущего пакетного сценария.



Посмотреть вложение CreateBAT.zip
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#7
Удаление всех сетевых шар

CMD/BATCH:
@set @x=0; /*
@echo off
SetLocal
ver |>NUL find "6." && if "%1" neq "Admin" (
  echo. Требуются права Администратора
  echo.
  pause & cscript.exe //nologo //e:jscript "%~f0" & Exit /B
)
echo.
echo. Скрипт удаления всех сетевых шар
echo.
echo. Список исходных шар:
echo.
net share
for /F "skip=4" %%? in ('net share ^| find /V "Команда выполнена" ^| find /V "The command completed"') do (
  net share "%%?" /DELETE
)
echo.
echo. Список исходных шар после удаления:
echo.
net share
echo.
pause
Exit /B
*/new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
 

Вложения

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#8
GetAssocTool - Получение пути к программе, асоциированной с расширением имени файла
Задаем интересующий тип файлов,
получаем путь к приложению по-умолчанию для открытия этого расширения.

VB.NET:
ext = inputbox ("Введите расширение имени файла:")
Path = GetAssocTool(ext)
Name = GetFileNameFromPath(Path)

msgbox "Расширение: " & ext & vbLf & "Имя файла: " & Name & vbLf & "Путь: " & Path


Function GetAssocTool(ext)
    'Получение пути к приложению, с которым ассоциировано расширение имени файла
    if left(ext,1) <> "." then ext = "." & ext
    if GetOSFamily() = "NT" then GetAssocTool = GetAssocTool_XP(ext) else GetAssocTool = GetAssocTool_Vista(ext)
End Function

Function GetAssocTool_Vista(ext)
    user_key = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & ext & "\UserChoice\Progid"

    set oShell = CreateObject("WScript.Shell")
    on error resume next
    progID = oShell.RegRead(user_key)
    on error goto 0

    if progid = "" then progID = oShell.RegRead("HKCR\" & ext & "\")

    comm = oShell.RegRead("HKCR\" & progID & "\shell\open\command\")

    GetAssocTool_Vista = ParsePathFromCommandLine(comm)
End Function

Function GetAssocTool_XP(ext)
    curSID = GetCurrentSID()
    set oShell = CreateObject("WScript.Shell")
    on error resume next
    EXE_Name = oShell.RegRead("HKEY_USERS\" & curSID & "\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\Application")
    on error goto 0
    if EXE_Name <> "" then
        comm = oShell.RegRead("HKCR\Applications\" & EXE_Name & "\shell\open\command\")
    else
        progID = oShell.RegRead("HKCR\" & ext & "\")
        comm = oShell.RegRead("HKCR\" & progID & "\shell\open\command\")
    end if

    GetAssocTool_XP = ParsePathFromCommandLine(comm)
End Function


Function ParsePathFromCommandLine(comm)
    'Получает путь из командной строки, если кроме него заданы дополнительные аргументы; убирает кавычки

    If Left(comm, 1) = """" Then
        ParsePathFromCommandLine = Mid(comm, 2, InStr(2, comm, """") - 2)
    Else
        ParsePathFromCommandLine = Split(comm)(0)
    End If
End Function


Function GetFileNameFromPath(sPath)
    'Преобразование пути в имя файла

    if instr(sPath,"\") = 0 then GetFileNameFromPath = sPath: Exit Function
    GetFileNameFromPath = Mid(sPath, InStrRev(sPath, "\") + 1)
End Function


Function GetCurrentSID()
    'Получить SID текущего пользователя

    Set oNetwork = CreateObject("WScript.Network")
    sUserName = oNetwork.UserName
    sDomain = oNetwork.UserDomain

    Set oWMI = GetObject("winmgmts:\root\cimv2")
    Set colSIDs = oWMI.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Caption='" & sDomain & "\\" & sUserName & "'")
    For each oSID in colSIDs
        GetCurrentSID = oSID.SID
    Next
    Set oWMI = Nothing: Set colSIDs = Nothing
End Function


Function GetOSFamily()
    ' Семейство ОС
    set oShell = CreateObject("WScript.Shell")
    OSVersion = oShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")

    if cint(left(OSVersion,1)) < 6 then GetOSFamily = "NT" else GetOSFamily = "Vista"
End Function
 

Вложения

Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#9
Управление локальными сетевыми подключениями (включить/отключить)
Совместимость: Windows Vista и выше.



CMD/BATCH:
@set @x=0; /*
@echo off
if "%1"=="" cscript.exe //nologo //e:jscript "%~f0"& Exit
SetLocal EnableDelayedExpansion
mode con: cols=90 lines=20

:begin
cls
Echo Доступны следующие интерфейсы:
Echo.
netsh interface show interface | more +3 | findstr "." | find /n /v ""
Echo.
for /f "skip=2 tokens=3*" %%a in ('netsh interface show interface') do set /a N+=1& set Local!N!=%%b
Echo.[0] - Обновить данные
echo.

:check
set ID=0
set /p "ID=Введите № интерфейса для управления: "
if "%ID%"=="0" goto begin

echo.
echo. Выбран: !Local%ID%!
echo.
echo 1 - Подключить
echo 2 - Отключить

set /p action=
if "%action%"=="1" (
  Echo Поключаю...
  netsh interface set interface name="!Local%ID%!" admin=ENABLED
) else (
  Echo Отключаю...
  netsh interface set interface name="!Local%ID%!" admin=DISABLED
)
pause
goto begin
*/new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
 

Вложения

Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#10
IP Location Checker
Авторы: Dragokas & LAMM_-*-_VURDALAK
Описание:
- принимает IP или имя WEB-страницы
- выдает такую информацию:
  • IP-адрес
  • Страну, код страны
  • Город (RU, EN)
  • IP Range
  • вычисляет маску подсети (битовую и по октетам)
  • определяет Ваш IP-адрес (если ничего не ввести)
Лицензия: код не является свободно распространяемым. Перепубликация - только с разрешения автора.
Скрипт является частью программы LAMM-*-VURDALAK's banning tool.
Данные парсятся со страниц:

Обсуждение в этой теме: http://safezone.cc/threads/ip-location-checker-obsuzhdenie.28611/
 

Вложения

Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#11
Смена владельца и прав на папку и ее содержимое, в которой запущен батник (Full Access <-> Read Only)
Автор: Dragokas

1) RO.cmd (ReadOnly) - делает все файлы и папки доступными только для чтения и выполнения.
Дополнительно разрешается в текущей папке - создавать файлы.
Все остальные операции, в т.ч. и создание файлов в подкаталогах - запрещено.

2) FA.cmd (FullAccess) - восстанавливает полный доступ для всех пользователей.

Для нормальной работы в ОС Windows Vista, Win 7 батник нужно запускать правой кнопкой мыши "От имени Администратора".

Как пользоваться:
Соблюдайте правила: запускать батник только из той папки, в которой нужно ограничить доступ (RO.cmd) или получить полные права (FA.cmd).
Работает рекурсивно для всех подкаталогов, начиная с каталога, в котором находится батник.


Для корректной работы потребуется утилита из состава Microsoft Support Tools - ICACLS
(включена в ОС Windows Server 2003, начиная с SP2).

Поддержка:
Скрипт протестирован в средах английской и русской локализаций, а также:
1) Windows XP SP2 (требуется утилита ICACLS). ICACLS из состава Windows 7 несовместим с XP.
2) Windows Server 2003 SP2
3) Windows 7 SP1

Сохранять в кодировке OEM-866.

FA.cmd
CMD/BATCH:
@echo off
if "%1"=="" (
Echo Working...
Call "%~dpnx0" 0 1>nul 2>&1
Echo Ready...
Goto :eof
)

Setlocal Enableextensions

Set Cur=%~dp0
Set Cur=%Cur:~0,-1%

takeown /f "%Cur%" /r /d y

icacls "%Cur%" /grant All:f /T /C
icacls "%Cur%" /grant Все:f /T /C
RO.cmd
CMD/BATCH:
@echo off
if "%1"=="" (
Echo Working...
Call "%~dpnx0" 0 1>nul 2>&1
Echo Ready...
Goto :eof
)

Setlocal Enableextensions

Set Cur=%~dp0
Set Cur=%Cur:~0,-1%

takeown /f "%Cur%" /r /d y

icacls "%Cur%" /deny All:(DE,WDAC,WO,AS,WD,AD,WEA,DC,WA) /T /C
icacls "%Cur%" /deny Все:(DE,WDAC,WO,WD,AS,AD,WEA,DC,WA) /T /C

icacls "%Cur%" /grant All:(RC,S,GR,GW,GE,RD,REA,X,RA) /T /C
icacls "%Cur%" /grant Все:(RC,S,GR,GW,GE,RD,REA,X,RA) /T /C

icacls "%Cur%" /grant All:(WD) /C
icacls "%Cur%" /grant Все:(WD) /C

icacls "%~dpnx0" /grant:r Все:f /C
icacls "%~dpnx0" /grant:r All:f /C
В коде использован метод двойного запуска скрипта исключительно для упрощения
перенаправления потока вывода в NUL.
Метод "обворачивания" скобками приводил к синтаксическим ошибкам в силу
некоторых особенностей работы утилиты ICACLS.
 

Вложения

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#12
Включение макросов в Microsoft Office 2003 - 2013
Автор скрипта: Dragokas
Версия: v.1.3 (31.08.2016)
Совместимость: Windows XP, Vista, Seven, 8. (x32, x64)
Office 2000, XP, 2003, 2007, 2010, 2013 (x32, x64).
  • Завершите все офисные приложения.
  • После запуска батника выберите цифру и нажмите ENTER:
1 - Запуск макросов без уведомления.
2 - Запуск макросов с разрешения пользователя.
3 - Запретить запуск неподписанных макросов (не уведомлять).

Рекомендуется выбирать 2.

Макросы включаются/отключаются одновременно во всех установленных приложениях:
- Word
- Excel
- OutLook
- Access
- PowerPoint
CMD/BATCH:
@echo off
:: Macros Access Script by Alex Dragokas
echo.
echo Утилита включения макросов для MS Office 2003-2013
echo.
:ch_Security
echo Введите цифру и нажмите кнопку ENTER:
echo.
echo 1 - Запуск макросов без уведомления.
echo 2 - Запуск макросов с разрешения пользователя.
echo 3 - Запретить запуск неподписанных макросов (не уведомлять).
echo.
set ch=
set /p "ch=Ваш выбор: "
echo.
if "%ch%"=="1" set "MacrosLevel=1"
if "%ch%"=="2" set "MacrosLevel=2"
if "%ch%"=="3" set "MacrosLevel=3"
if "%ch%" neq "1" if "%ch%" neq "2" if "%ch%" neq "3" goto ch_Security
:ch_VBA
echo Хотите включить программный доступ к коду макроса?
echo.
echo 1 - Да. Разрешить.
echo 2 - Нет. Запретить.
echo.
set ch=
set /p "ch=Ваш выбор: "
echo.
if "%ch%"=="1" set "ProjectLevel=1"
if "%ch%"=="2" set "ProjectLevel=0"
if "%ch%" neq "1" if "%ch%" neq "2" goto ch_VBA

:: Проверяю, запущен ли хоть один из процессов MS Office
:Check
call :CheckRun || (echo.& echo НЕЛЬЗЯ продолжить. Сначала нужно завершить все офисные приложения.& echo.& pause & echo.& goto Check)

For %%k in (
  HKCU\Software\Microsoft\Office
  HKCU\Software\Wow6432Node\Microsoft\Office
) do (
  For /F "tokens=5 delims=\" %%a in ('reg query "%%k" 2^>NUL ^| findstr /R "^.*\\[0-9].*"') do (
    if "%%a" neq "8.0" (
      if "%%a"=="9.0"  (echo Обнаружен MS Office 2000 & call :EnumApps 2003 "%%a")
      if "%%a"=="10.0" (echo Обнаружен MS Office XP   & call :EnumApps 2003 "%%a")
      if "%%a"=="11.0" (echo Обнаружен MS Office 2003 & call :EnumApps 2003 "%%a")
      if "%%a"=="12.0" (echo Обнаружен MS Office 2007 & call :EnumApps 2007 "%%a")
      if "%%a"=="13.0" (echo Обнаружен MS Office 2010 & call :EnumApps 2007 "%%a")
      if "%%a"=="14.0" (echo Обнаружен MS Office 2010 & call :EnumApps 2007 "%%a")
      if "%%a"=="15.0" (echo Обнаружен MS Office 2013 & call :EnumApps 2007 "%%a")
      if not Defined isChanges (echo Обнаружена неизвестная версия MS Office & call :EnumApps 2007 "%%a")
      echo.
    )
  )
)
pause
exit /B

:EnumApps %1-mso.family %2-key.version
  Set "isChanges=true"
  For %%k in (
    HKCU\Software\Microsoft\Office\%~2
    HKCU\Software\Wow6432Node\Microsoft\Office\%~2
  ) do (
    For /F "tokens=6 delims=\" %%a in ('reg query "%%k" 2^>NUL') do (
      if /i "%%a"=="Word" call :ChangeSecurity "%~1" "%~2" "%%a"
      if /i "%%a"=="Excel" call :ChangeSecurity "%~1" "%~2" "%%a"
      if /i "%%a"=="PowerPoint" call :ChangeSecurity "%~1" "%~2" "%%a"
      if /i "%%a"=="Access" call :ChangeSecurity "%~1" "%~2" "%%a"
      if /i "%%a"=="Outlook" call :ChangeSecurity "%~1" "%~2" "%%a"
    )
  )
Exit /B

:ChangeSecurity %1-mso.family %2-key.version %3-Application
  echo %~3
  if "%~1"=="2003" reg add "HKCU\Software\Microsoft\Office\%~2\%~3\Security" /v Level /t REG_DWORD /d %MacrosLevel% /f
  if "%~1"=="2007" reg add "HKCU\Software\Microsoft\Office\%~2\%~3\Security" /v VBAWarnings /t REG_DWORD /d %MacrosLevel% /f
  if /i "%~3" neq "Outlook" if "%~2" neq "9.0" reg add "HKCU\Software\Microsoft\Office\%~2\%~3\Security" /v AccessVBOM /t REG_DWORD /d %ProjectLevel% /f
Exit /B

:CheckRun
  TASKLIST /FI "imagename eq winword.exe" | find /i "winword.exe" && exit /B 1
  TASKLIST /FI "imagename eq excel.exe" | find /i "excel.exe" && exit /B 1
  TASKLIST /FI "imagename eq powerpnt.exe" | find /i "powerpnt.exe" && exit /B 1
  TASKLIST /FI "imagename eq outlook.exe" | find /i "outlook.exe" && exit /B 1
  TASKLIST /FI "imagename eq msaccess.exe" | find /i "msaccess.exe" && exit /B 1
Exit /B 0
Инструкция, как включить макросы вручную.
 

Вложения

Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#13
Пример монтирования ISO-образа с помощью Daemon Tools Lite

Алгоритм:
  • Определение, установлен ли Daemon Tools
  • Определение, буквы привода
  • Если ее нет, устанавливаем драйвер DT
  • Размонтируем предыдущий образ, монтируем новый.

В коде использован скрипт получения информации о дисках DriveTypes.vbs от Rob van der Woude Источник

Весь процесс можно заменить предусмотренными в руководстве DT командами ком.строки:

CMD/BATCH:
DTLite.exe -get_count dt
DTLite.exe -get_letter dt, 1
За исключением одной "проблемки". В последней версии DT Lite эти команды ничего не возвращают. Вот. Поэтому - только батником (ну или ручками :)).

14.07.2017 - скрипт обновлён.
 

Вложения

Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#14
Монтирование ISO в Windows 8, используя PowerShell и CMD.

Совместимость: только Windows 8 +
Источник: stackoverflow.com, а также TechNet - один, два.
  • указываем в коде путь к образу;
  • запускаем и получаем букву диска, на который был смонтирован образ;
  • нажимаем любую клавишу: образ будет размонтирован.
CMD/BATCH:
:: укажем путь к образу
set WindowsISO=c:\Windows7.ISO

ECHO Начинаю процесс монтирования образа ISO: %WindowsISO%  ...
powershell.exe "Mount-DiskImage ""%WindowsISO%"""
:: Получаю имя диска по указанному пути к образу
FOR /F "skip=3" %%I IN ('powershell.exe "Get-DiskImage """%WindowsISO%""" | Get-Volume | Select-Object {$_.DriveLetter}"') DO echo Disk %%I
pause
ECHO Размонтирование образа ISO
powershell.exe "Dismount-DiskImage ""%WindowsISO%"""
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#15
Как узнать, сколько места занимает MFT ?

Запустим консоль с правами Администратора,
и вызовем defrag (только анализ).

Для системного диска команда выглядит так:
CMD/BATCH:
defrag %SystemDrive% /a /v
Если нужно узнать MFT, например диска D:
подставьте вместо %SystemDrive% нужный D:


 

Вложения

Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#16
Получение HDD Smart

Автор: Леонид_33

Отчет в виде CSV.
Мною добавлены функции повышение привилегий и скорректирован вывод отчета в папку рядом со скриптом.

VB.NET:
'==========================================================================
'
' AUTHOR: Леонид_33
' NAME: HDD_Smart.vbs
'
' Скрипт для получения SMARTа HDD
' Может брать SMART как с локальной так и удаленной машины с выводом результата в файл в формате CSV
' При запуске скрипта выдается окно ввода имени(IP) машины с учетными данными
' Если хотим получить SMART с локальной машины, то ничего не указываем, если с удаленной, указываем имя(IP) машины, и, если надо, учетные данные
' Работает на WindowsXP(SP2,SP3), Windows2003SP2, Windows2008SP1
' Берет SMART через WMI, поэтому, что винда отдает, то отдает т.е.
' работает только со стандартно подключенными на мать HDD IDE и SATA
' Как бы того не хотелось, НЕ РАБОТАЕТ с рэйдами.
' Ну не видит винда SMARTов с этих винтов и все тут.
'
' Если что по атрибутам неясно, можно глянуть тут
' http://en.wikipedia.org/wiki/Self-Monitoring%2C_Analysis%2C_and_Reporting_Technology
'
'==========================================================================

if not isAdminRights then call Elevate(""): WScript.Quit

Dim strComputer
Dim strLogin
Dim strPassword
On Error Resume Next
'GetPassword()
   strComputer = "."
   strLogin = ""
   strPassword = ""


If strLogin = "" or strComputer = "." then
   Set    objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")
else
   Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
   Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _
      "root\CIMV2", _
      strLogin, _
      strPassword, _
      "MS_409")
end If

    Set    SmartDataItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictData", "WQL", 48)

    InstanceName = Array()
    SmartData = Array()
    SmartLength = Array()
    RowCount = 0
    For Each objItem In SmartDataItems
          Redim Preserve InstanceName(RowCount)
          InstanceName(RowCount) = objItem.InstanceName
          Redim Preserve SmartData(RowCount)
          SmartData(RowCount) = objItem.VendorSpecific
          Redim Preserve SmartLength(RowCount)
          SmartLength(RowCount) = objItem.Length
          RowCount = RowCount + 1
    Next
    Set    SmartDataItems = Nothing

    ThresholdData = Array()
    Redim Preserve ThresholdData(RowCount)
    PredictFailure = Array()
    Redim Preserve PredictFailure(RowCount)
    Reason = Array()
    Redim Preserve Reason(RowCount)

    RowCount = 0
    Set    ThresholdItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictThresholds", "WQL", 48)
    For Each objItem In ThresholdItems
          ThresholdData(RowCount) = objItem.VendorSpecific
          RowCount = RowCount + 1
    Next
    Set    ThresholdItems = Nothing

    RowCount = 0
    Set    PredictStatusItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictStatus", "WQL", 48)
    For Each objItem In PredictStatusItems
          PredictFailure(RowCount) = objItem.PredictFailure
          Reason(RowCount) = objItem.Reason
          RowCount = RowCount + 1
    Next
    Set    PredictStatusItems = Nothing

    Set oDict = CreateObject("Scripting.Dictionary")
    CreateDict(oDict)

    Set objFSO = CreateObject("Scripting.FileSystemObject")
 
    If strComputer = "." then
       'Set objTextFile = objFSO.OpenTextFile(objFSO.GetSpecialFolder(2) & "\drp\" & "HDD_Smart.csv", 2, True)
       Set objTextFile = objFSO.OpenTextFile(objFSO.GetParentFolderName(WScript.ScriptFullName) & "\HDD_Smart.csv", 2, True)
    else
       'Set objTextFile = objFSO.OpenTextFile(objFSO.GetSpecialFolder(2) & "\drp\" & "HDD_Smart_" & strComputer & ".csv", 2, True)
       Set objTextFile = objFSO.OpenTextFile(objFSO.GetParentFolderName(WScript.ScriptFullName) & "\HDD_Smart_" & strComputer & ".csv", 2, True)
    end If

    For CurrentDisk = 0 to RowCount - 1
         objTextFile.WriteLine("Drive: " & Replace(Mid(InstanceName(CurrentDisk), 9, InStr(InstanceName(CurrentDisk), "__") - 9), "_", " "))
         objTextFile.WriteLine("PredictFailure: " & PredictFailure(CurrentDisk))
         objTextFile.WriteLine("Reason: " & Reason(CurrentDisk))
         objTextFile.WriteLine("ID;Attribute;Type;Flag;Threshold;Value;Worst;Raw;Status;")
         aSmartData = SmartData(CurrentDisk)
         aThresholdData = ThresholdData(CurrentDisk)

         If IsArray(aSmartData) AND IsArray(aThresholdData) Then
             LastID = 0
             For x = 2 To SmartLength(CurrentDisk) + 2 Step 12
                  If LastID > aSmartData(x)  then
                     x = 514
                  else
                     LastID = aSmartData(x)                   

                  If aSmartData(x) <> 0 Then
                      objTextFile.Write(aSmartData(x) & ";")
                      If oDict.Item(aSmartData(x)) = "" Then
                            objTextFile.Write("VendorSpecific(" & aSmartData(x) & ");")
                      else
                            objTextFile.Write(oDict.Item(aSmartData(x)) & ";")
                      end If

                      If aSmartData(x + 1) MOD 2 Then
                            objTextFile.Write("Pre-Failure;")
                      Else
                            objTextFile.Write("Advisory;")
                      End If

'                      objTextFile.Write(aSmartData(x + 1) & ";")
                      aFlag = aSmartData(x + 1)
                      txtFlag = ""
                      If (aFlag And &H1) <> 0 Then txtFlag = "LC," End If
                      If (aFlag And &H2) <> 0 Then txtFlag = txtFlag & "OC," End If
                      If (aFlag And &H4) <> 0 Then txtFlag = txtFlag & "PR," End If
                      If (aFlag And &H8) <> 0 Then txtFlag = txtFlag &  "ER," End If
                      If (aFlag And &H10) <> 0 Then txtFlag = txtFlag &  "EC," End If
                      If (aFlag And &H20) <> 0 Then txtFlag = txtFlag &  "SP," End If
                      If txtFlag <> "" then
                         txtFlag = Left(txtFlag, Len(txtFlag)-1 )
                      end If
                      objTextFile.Write txtFlag & ";"

                      objTextFile.Write(aThresholdData(x + 1) & ";") 'Threshold
                      objTextFile.Write(aSmartData(x + 3) & ";")      'Value
                      objTextFile.Write(aSmartData(x + 4) & ";")      'Worst
                      objTextFile.Write((aSmartData(x + 8) * 65536 + aSmartData(x + 7) * 4096 + aSmartData(x + 6) * 256 + aSmartData(x + 5)) & ";")      'Raw
                      If aSmartData(x + 3) >= aThresholdData(x + 1) Then
                           objTextFile.WriteLine("OK;")
                      else
                           objTextFile.WriteLine("NOT OK;")
                      end If
                  end If
                  end If
             Next
         else
             objTextFile.WriteLine("NO DRIVE WITH SMART FOUND;")
         end If
         'objTextFile.WriteLine
    Next

    objTextFile.WriteLine
    objTextFile.WriteLine("LC - life critical;")
    objTextFile.WriteLine("OC - online collection;")
    objTextFile.WriteLine("PR - performance related;")
    objTextFile.WriteLine("ER - error rate;")
    objTextFile.WriteLine("EC - event count;")
    objTextFile.WriteLine("SP - self preserving;")
    objTextFile.Close

    Wscript.echo "HDD_SMART Is Done!"

Function CreateDict(oDict)
    oDict.Add 1, "Raw Read Error Rate"
    oDict.Add 2, "Throughput Performance"
    oDict.Add 3, "Spin-Up Time"
    oDict.Add 4, "Start/Stop Count"
    oDict.Add 5, "Reallocated Sectors Count"
    oDict.Add 6, "Read Channel Margin"
    oDict.Add 7, "Seek Error Rate Rate"
    oDict.Add 8, "Seek Time Performance"
    oDict.Add 9, "Power-On Hours (POH)"
    oDict.Add 10, "Spin Retry Count"
    oDict.Add 11, "Recalibration Retries Count"
    oDict.Add 12, "Device Power Cycle Count"
    oDict.Add 13, "Soft Read Error Rate"
    oDict.Add 190, "HDA Temperature"
    oDict.Add 191, "G-Sense Error Rate Frequency"
    oDict.Add 192, "Power-Off Park Count"
    oDict.Add 193, "Load/Unload Cycle Count"
    oDict.Add 194, "HDA Temperature"
    oDict.Add 195, "Hardware ECC Corrected Count"
    oDict.Add 196, "Reallocated Event Count"
    oDict.Add 197, "Current Pending Sector Count"
    oDict.Add 198, "Off-Line Scan Uncorrectable Sector Count"
    oDict.Add 199, "UltraDMA CRC Error Count"
    oDict.Add 200, "Write Error Rate"
    oDict.Add 201, "Soft Read Error Rate"
    oDict.Add 202, "Address Mark Errors Frequency"
    oDict.Add 203, "ECC errors (Maxtor: ECC Errors)"
    oDict.Add 204, "Soft ECC Correction"
    oDict.Add 205, "Thermal Asperity Rate (TAR)"
    oDict.Add 206, "Flying Height"
    oDict.Add 207, "Spin High Current"
    oDict.Add 208, "Spin Buzz"
    oDict.Add 209, "Offline Seek Perfomance"
    oDict.Add 210, "Vibration During Write"
    oDict.Add 211, "Vibration During Read"
    oDict.Add 212, "Shock During Write"
    oDict.Add 220, "Disk Shift"
    oDict.Add 221, "G-Sense Error Rate"
    oDict.Add 222, "Loaded Hours"
    oDict.Add 223, "Load/Unload Retry Count"
    oDict.Add 224, "Load Friction"
    oDict.Add 225, "/Unload Cycle Count"
    oDict.Add 226, "Load 'In'-time"
    oDict.Add 227, "Torque Amplification Count"
    oDict.Add 228, "Power-Off Retract Cycle"
    oDict.Add 230, "GMR Head Amplitude"
    oDict.Add 240, "Head Flying Hours"
    oDict.Add 250, "Read Error Retry Rate"
End Function

Function GetPassword()
    Dim IE
    On Error Resume Next
   Set IE = CreateObject( "InternetExplorer.Application" )
   With IE
      .AddressBar = False
      .menubar = False
      .Navigate "about:blank"
      .Document.Title = "Password"
      .ToolBar        = False
      .Resizable      = False
      .StatusBar      = False
      .Width          = 340
      .Height         = 230
   End With
   With IE.Document.ParentWindow.Screen
      IE.Left = (.AvailWidth  - IE.Width ) \ 2
      IE.Top  = (.Availheight - IE.Height) \ 2
   End With
   Do While IE.Busy
      WScript.Sleep 200
   Loop

   IE.Document.Body.InnerHTML =    "<BODY SCROLL=""NO"" BGCOLOR=""#" & BCol & """ TEXT=""#" & TCol & """>" & _
               "<FONT FACE=""arial"" SIZE=2>" & _
               "Введите имя компьютера<BR><INPUT SIZE=""40"" " & "ID=""Computer""><BR>"  &_
               "Пользователь<BR><INPUT SIZE=""40"" " & "ID=""Login""><BR>" &_
               "Пароль<BR><INPUT TYPE=""password"" SIZE=""40"" " & "ID=""Login"">" &_
               "<P><INPUT TYPE=""hidden"" ID=""OK"" " & "NAME=""OK"" VALUE=""0"">"& _
               "<INPUT TYPE=""submit"" VALUE="" OK "" " & "OnClick=""vbscript:OK.Value=1""></P>"
   strComputer = "."
   strLogin = ""
   strPassword = ""

   IE.visible = True
   Do While IE.Document.All.OK.Value = 0
      WScript.Sleep 200
   Loop

   If IE.Document.All.Computer.Value = "" then
      strComputer = "."
   else
      strComputer = IE.Document.All.Computer.Value
      If IE.Document.All.Login.Value <> "" then
         strLogin = IE.Document.All.Login.Value
         strPassword = IE.Document.All.Password.Value
      else
         strLogin = ""
         strPassword = ""
      end If
   end If
   IE.Quit
   Set IE = Nothing
End Function

Sub Elevate(msg)
     Const DQ = """"
     if msgbox(msg & vblf & "Запустить с Административными привилегиями ?", vbQuestion + vbYesNo,"Подтверждение") = vbNo then WScript.Quit 5
     Dim oShellApp: Set oShellApp = CreateObject("Shell.Application")
     ' Конкатенация аргументов
     Dim args, i: For i = 1 to WScript.Arguments.Count
         args = args & DQ & WScript.Arguments(i - 1) & DQ & " "
     Next
     if len(args) = 0 then args = DQ & syscure & DQ & " " & DQ & syscheck & DQ
     oShellApp.ShellExecute WScript.FullName, DQ & WScript.ScriptFullName & DQ & " " & args, "", "runas", 1
     set oShellApp = Nothing
End Sub

Function isAdminRights()
     Const KQV = &H1, KSV = &H2, HKCU = &H80000001, HKLM = &H80000002
     Set oReg = GetObject("winmgmts:root\default:StdRegProv")
     strKey = "System\CurrentControlSet\Control\Session Manager"
     intErrNum = oReg.CheckAccess(HKLM, strKey, KQV + KSV, flagAccess)
     isAdminRights = flagAccess
     Set oReg = Nothing
End Function
 

Вложения

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#17
Блокировка настроек Internet Explorer

CMD/BATCH:
@Echo Off
:: Этот командный файл ограничивает политиками управление домашней страницей, поиском и надстройками в IE
:: Автор: Вадим Стеркин. Подробнее http://www.outsidethebox.ms/12904/
:: Политика "Отключить изменение параметров домашней страницы"
:: Задает домашнюю страницу и фиксирует ее политикой
REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main" /v "Start Page" /d "http://www.outsidethebox.ms/" /f
REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel" /v HomePage /t REG_DWORD /d 1 /f
:: Политика "Разрешить сторонние расширения браузера"
:: Запрещает запуск BHO, блокируя панели браузера
REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main" /v "Enable Browser Extensions" /t REG_SZ /d no /f
:: Политика "Не разрешать пользователям включать и отключать надстройки"
:: Полностью отключает управление надстройками
:: REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Restrictions" /v NoExtensionManagement /t REG_DWORD /d 1 /f
:: Политика "Ограничить поставщиков служб поиска заданным списком поставщиков"
:: Включает ограничение списка поисков
REG ADD "HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Infodelivery\Restrictions" /v UsePolicySearchProvidersOnly /t REG_DWORD /d 1 /f
:: Переносит текущий список поисков в политики
REG EXPORT "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes" "%temp%\scopes.reg"
CALL :SearchScope
REG IMPORT "%temp%\scopes.reg"
DEL "%temp%\scopes.reg"
EXIT
:SearchScope
:: http://forum.oszone.net/thread-191684.html
Set Source=%temp%
SetLocal EnableDelayedExpansion
For %%A In ("%Source%\scopes.reg") Do (
    For /F "Tokens=1* Delims=:" %%B In ('Type "%%A"^|Findstr /IN "$"') Do (
        Set Str=%%C
        If "!Str!"=="" (
            Echo.>>"%%A_tmp"
        ) Else (
            Set Str=!Str:Software\=Software\Policies\!
            Echo !Str!>>"%%A_tmp"
        )
    )
    Move /Y "%%A_tmp" "%%~fA"
)
EndLocal
 

Phoenix

Активный пользователь
Сообщения
2,105
Симпатии
2,049
Баллы
433
#18
Настройка задания для оптимизации папки winsxs
Код:
:: настройка очистки папки winsxs
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Update Cleanup" /v StateFlags0088 /t REG_DWORD /d 2 /f
:: (необязательно) настройка очистки временных файлов (в частности зачищает временную папку dism)
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files" /v StateFlags0088 /t REG_DWORD /d 2 /f
:: создание запланированного задания "CleanupWinSxS"
schtasks /Create /TN CleanupWinSxS /RL Highest /SC monthly /TR "cleanmgr /sagerun:88"
Вы можете очистить хранилище компонентов вручную одной командой.
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore - анализ
Dism.exe /Online /Cleanup-Image /StartComponentCleanup - очистка
Код:
Microsoft Windows [Version 6.3.9600]
(c) Корпорация Майкрософт (Microsoft Corporation), 2013. Все права защищены.

C:\WINDOWS\system32>Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

Cистема DISM
Версия: 6.3.9600.17031

Версия образа: 6.3.9600.17031

[===========================99.2%========================= ]

Сведения хранилища компонентов (WinSxS):

Размер хранилища компонентов по данным проводника : 5.69 GB

Фактический размер хранилища компонентов : 5.58 GB

    Совместно с Windows : 4.74 GB
    Резервные копии и отключенные компоненты : 707.55 MB
    Кэш и временные данные : 154.43 MB

Дата последней очистки : 2014-06-19 22:30:55

Число освобождаемых пакетов : 0
Рекомендуется очистка хранилища компонентов : Нет

Операция успешно завершена.
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
Внимание! Удаление предыдущих версий компонентов лишает вас возможности удалить установленные обновления и пакеты исправлений (Service Packs), но не блокирует установку будущих обновлений.
Начиная с Windows 8.1, у параметра /StartComponentCleanup есть дополнительный ключ /ResetBase, с помощью которого можно удалить все предыдущие версии компонентов. Этот ключ не задействован в запланированном задании.
Подробно тут ->
для win8 http://www.outsidethebox.ms/15272/
для win7 http://www.outsidethebox.ms/15444/
 
Последнее редактирование модератором:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#19
Подсчет частоты символов в бинарном файле (макрос Excel)

 

Вложения

Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,963
Симпатии
5,785
Баллы
588
#20
Перерегистрация библиотек Internet Explorer в случае возникновения проблем невирусного характера.

Перерегистрация библиотек для IE может помочь в случаях аварийного завершения работы браузера, некорректного отображения страниц, появления ошибок во время работы в браузере.

Для перерегистрации библиотек загрузите архив из поста ниже.

В архиве 3 файла:
ie-rereg.32on64 - перегистрация библиотек 32-битного IE в 64-битной ОС.
ie-rereg.64on64 - перегистрация библиотек 64-битного IE в 64-битной ОС.
ie-rereg - перегистрация библиотек IE вне зависимости от разрядности ОС.

Извлеките файлы на рабочий стол.
Нажмите на нужный файл (в зависимости от разрядности ОС) правой кнопкой мыши и выберите пункт "Запуск от имени администратора".
Откроется окно командной строки, в нем будет примерно следующий текст:


Источник
 

Вложения

Последнее редактирование:
Сверху Снизу