ПРИМЕРЫ СКРИПТОВ

Курс "Защита программ и данных"

Скрипты с использованием возможностей WMI для получения сведений о компьютере

Скрипт для получения информации о логических дисках на компьютере

(закомментированая строка в середине скрипта может быть использована для получения информации об одном диске D:)


REM ========================================================
REM                                 Скрипт для получения информации о логических дисках (диске)
REM                                           Выводится не вся возможная информация !!!
REM =========================================================
Option Explicit      ' Установка обязательного объявления переменных 

Dim strComputer   ' Имя компьютера
Dim strNamespace  ' Имя пространства имен
Dim objService    ' Объект SWbemServices
Dim colDisks      ' Коллекция экземпляров класса WMI
Dim objDisks      ' Элемент коллекции
Dim strResult     ' Результат запроса

strComputer = "."                 ' Работаем с текущим компьютером (можно указать сетевое имя )
strNamespace = "Root\CIMV2"

Set objService = GetObject("WinMgmts:\\" & strComputer & "\" & strNamespace)
Rem Set colDisks = objService.ExecQuery("Select * from Win32_LogicalDisk " & "where DeviceID = 'D:' ")

Set colDisks = objService.ExecQuery("Select * from Win32_LogicalDisk ")
strResult = ""
For Each objDisks In colDisks          ' Цикл по коллекции
strResult = strResult & "Свойства диска " & objDisks.Name & VbCrLf &_  
   "Description = " & objDisks.Description & VbCrLf &_
   "File System = " & objDisks.FileSystem & VbCrLf &_
   "Size = " & objDisks.Size & VbCrLf &_
   "Free Space =" & objDisks.FreeSpace & VbCrLf &_
   "VolumeName = "& objDisks.VolumeName & VbCrLf &_
   "VolumeSerialNumber = " & objDisks.VolumeSerialNumber & VbCrLf
Next
WScript.Echo strResult

Скрипт для получения информации о BIOS

REM ================================================================================
REM                                          Скрипт для получения информации о BIOS
REM                                           Выводится не вся возможная информация !!!
REM ================================================================================
Option Explicit
Dim strComputer
Dim strNamespace
Dim strClass
Dim objClass
Dim colInstances
Dim objBIOS
Dim strResult

strComputer = "."     ' Для текущего компьютера
strNamespace = "Root\CIMV2"
strClass = "Win32_BIOS"
strResult = "BIOS Information : " & VbCrLf 
Set objClass = GetObject("winmgmts:\\" & strComputer & "\" & strNamespace & ":" & strClass)
Set colInstances = objClass.Instances_

For Each objBIOS In colInstances
strResult = strResult & "Name : " & objBIOS.Name & VbCrLf 

strResult = strResult & "Manufacturer : " & objBIOS.Manufacturer & VbCrLf 
strResult = strResult & "Caption : " & objBIOS.Caption & VbCrLf 
strResult = strResult & "Description : " & objBIOS.Description & VbCrLf 
strResult = strResult & "Build Number : " & objBIOS.BuildNumber & VbCrLf 
strResult = strResult & "Current Language : " & objBIOS.CurrentLanguage & VbCrLf 
strResult = strResult & "SMBIOS version : " & objBIOS.SMBIOSBIOSVersion & VbCrLf 
strResult = strResult & "Serial Number : " & objBIOS.SerialNumber & VbCrLf 
Next
WScript.Echo strResult

Скрипт для получения информации о WINDOWS

REM ================================================================================
REM                                          Скрипт для получения информации о WINDOWS
REM                                           Выводится не вся возможная информация !!!
REM ================================================================================
Option Explicit
Dim strComputer
Dim strNamespace
Dim strClass
Dim objClass
Dim colOperatingSystems
Dim objOperatingSystem
Dim strResult

strComputer = "."   ' Для текущего компьютера
strNamespace = "Root\CIMV2"
strClass = "Win32_OperatingSystem"
strResult = "Operating System properties : " & VbCrLf
Set objClass = GetObject("winmgmts:\\" & strComputer & "\" & strNamespace & ":" & strClass)
Set colOperatingSystems = objClass.Instances_

For Each objOperatingSystem In colOperatingSystems
strResult = strResult & "Build Number : " & objOperatingSystem.BuildNumber & VbCrLf
strResult = strResult & "Build Type : " & objOperatingSystem.BuildType & VbCrLf
strResult = strResult & "Caption : " & objOperatingSystem.Caption & VbCrLf
strResult = strResult & "Version : " & objOperatingSystem.Version & VbCrLf
strResult = strResult & "OS Product Suite : " & objOperatingSystem.OSProductSuite & VbCrLf
strResult = strResult & "OS Language : " & objOperatingSystem.OSLanguage & VbCrLf
strResult = strResult & "OS Type : " & objOperatingSystem.OSType & VbCrLf
strResult = strResult & "Install Date : " & objOperatingSystem.InstallDate & VbCrLf
strResult = strResult & "Serial Number : " & objOperatingSystem.SerialNumber & VbCrLf
Next
WScript.Echo strResult

Скрипты с использованием возможностей ADSI для получения сведений о компьютере

Скрипт для получения списка провайдеров ADSI

REM ================================================================================
REM                                          Скрипт для получения списка провайдеров ADSI
REM ================================================================================
DIM objProvider
Set objProvider = GetObject("ADs:")
For Each Provider In objProvider
    WScript.Echo Provider.Name
Next

Скрипт для определения всех групп, в которые входит пользователь

REM ================================================================================
REM                Скрипт для определения всех групп, в которые входит пользователь
REM ================================================================================
Dim UserObj
Dim E
Dim GroupObj
Dim SList

Set UserObj = GetObject("WinNT://./goshevp")     ' Задается имя пользователя
Set E = UserObj.Groups
SList = "User Goshevp is in the next groups : " + VbCrLf
For Each GroupObj In E  
  SList = SList + GroupObj.Name + VbCrLf
Next
WScript.Echo SList

Скрипт для определения всех пользователей на компьютере (группа users)

REM ================================================================================
REM                Скрипт для определения всех пользователей на компьютере (группа users)
REM ================================================================================
Dim UserObj
Dim E
Dim GroupObj
Dim SList

Set UserObj = GetObject("WinNT://./users,group")
Set E = UserObj.Members
SList = "Computel Users  : " + VbCrLf
For Each GroupObj In E  
  SList = SList + GroupObj.Name + VbCrLf
Next
WScript.Echo SList

Скрипт для определения всех групп на компьютере

REM ================================================================================
REM                Скрипт для определения  всех групп на компьютере
REM ================================================================================
Dim ComputerObj,UserObj
Dim E
Dim GroupObj
Dim SList
Dim EItem

Set ComputerObj = GetObject("WinNT://.")
SList = "Computer Groups : " + VbCrLf
For Each GroupObj In ComputerObj  
  If GroupObj.Class = "Group" Then
  SList = SList + GroupObj.Name + VbCrLf
  End If
Next
WScript.Echo SList

Скрипт для определения всех пользователей на компьютере

REM ================================================================================
REM                Скрипт для определения  всех пользователей на компьютере
REM ================================================================================
Dim ComputerObj,UserObj
Dim E
Dim GroupObj
Dim SList
Dim EItem

Set ComputerObj = GetObject("WinNT://.")
SList = "Computer Users : " + VbCrLf
For Each GroupObj In ComputerObj  
  If GroupObj.Class = "User" Then
  SList = SList + GroupObj.Name + VbCrLf
  End If
Next
WScript.Echo SList

Примеры скриптов, выполняющих некоторые полезные для защиты функции

Скрипт для получения информации о своем имени

REM ================================================================================
REM                                          Скрипт для получения информации о своем имени
REM ================================================================================
Option Explicit
Dim strResult
strResult = WScript.ScriptFullName
WScript.echo strResult

Скрипт, выводящий свой собственный текст построчно

REM ================================================================================
REM                                          Скрипт для выводящий свой собственный текст
REM ================================================================================
Option Explicit
Dim FSO
Dim inFile
Dim strLine
Const ForReading = 1

Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set inFile = FSO.OpenTextFile(WScript.ScriptFullName,ForReading)
While ( Not inFile.AtEndOfStream )
  strLine = inFile.ReadLine
  WScript.Echo strLine
WEnd 

Скрипт, выполняющий сгенерированный на ходу код

REM ================================================================================
REM     Пример скрипта, выполняющего сгенерированного на ходу фрагмента кода
REM   Эту возможность можно использовать для шифрования фрагмента кода скрипта
REM ================================================================================
Dim eString
Dim i
Dim k

i = 1
'eString="Sub SecretProc" & vbCrLf      '  Формируемый код
eString= "i=2"& VbCrLf                           '  Формируемый код
eString=eString & "k=4"& VbCrLf           '  Формируемый код
eString=eString & "WScript.Echo k"      '  Формируемый код

WScript.Echo ("0x" & Hex(32))              ' Проверка функции преобразования числа в строковое 16-с/с представление
Execute (estring)
WScript.Echo i

Подготовлено 11.10.2007 Гошев П.И.