VBScript (Microsoft Visual Basic Scripting Edition)
001. テキストファイル切り出し
'// 切り出したいテキストファイルをドラッグ&ドロップ
'// Arguments : (0)Imput File
Set objArgs = WScript.Arguments
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
'// Change current directory
WshShell.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName)
'// Input read file
If objArgs.Count > 0 Then
strReadFile = objArgs(0)
Else
strReadFile = InputBox("ファイル名を入力して下さい", strTitle & " 1/3")
If strReadFile = "" Then WScript.Quit
End If
intStart = InputBox("先頭行を入力して下さい", strTitle & " 2/3", 1) + 0
If intStart = "" Then WScript.Quit
intLines = InputBox("切り出す行数を入力して下さい", strTitle & " 3/3", 100) + 0
If intLines = "" Then WScript.Quit
strWriteFile = strReadFile & "+" & intStart & "~" & intLines & "行.txt"
Set objReadFile = fso.OpenTextFile(strReadFile, 1, False)
Set objWriteFile = fso.CreateTextFile(strWriteFile, True)
a = 1
Do While a < intStart
strLine = objReadFile.ReadLine
a = a + 1
Loop
a = 0
Do Until a = intLines Or objReadFile.AtEndOfStream
objWriteFile.WriteLine (objReadFile.ReadLine)
a = a + 1
Loop
objReadFile.Close
objWriteFile.Close
x = MsgBox("処理が終わりました。", 64, strTitle)
|
002. HTML を読む
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate ("http://www.yahoo.co.jp/index.html")
Do While objIE.Busy
WScript.Sleep 100
Loop
MsgBox (objIE.document.body.innerText)
Set objIE = Nothing
|
003. ASP を読む
On Error Resume Next
strURL = "http://192.168.0.1/read.asp?parm1=123&parm2=abc"
Set objXML = WScript.CreateObject("MSXML2.ServerXMLHTTP")
objXML.Open "POST", strURL, False
objXML.Send
strText = objXML.ResponseText
intStat = objXML.Status
strStat = objXML.StatusText
Set objXML = Nothing
MsgBox strText
MsgBox intStat
MsgBox strStat
|
004. RSS(XML) を読む
Set objXML = CreateObject("MSXML2.DOMDocument")
objXML.async = False
rtResult = objXML.Load("http://dailynews.yahoo.co.jp/fc/rss.xml")
If rtResult = True Then
subSetData objXML.childNodes
End If
Set objXML = Nothing
WScript.Quit
Sub subSetData(objNode)
For Each Item In objNode
If Item.nodeType = 3 Then
a = ""
a = a & "Name(4) = " & Item.parentNode.parentNode.parentNode.parentNode.nodeName & vbCrLf
a = a & "Name(3) = " & Item.parentNode.parentNode.parentNode.nodeName & vbCrLf
a = a & "Name(2) = " & Item.parentNode.parentNode.nodeName & vbCrLf
a = a & "Name(1) = " & Item.parentNode.nodeName & vbCrLf
a = a & "Value = " & Item.nodeValue & vbCrLf
MsgBox a
End If
If Item.hasChildNodes Then
subSetData Item.childNodes
End If
Next
End Sub
|
005. WMIクラス/プロセス情報の取得
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")
'// 特定のプロセスを指定する場合
'For Each Process In objWMI.ExecQuery("select * from Win32_Process where name='wscript.exe'")
For Each Process In objWMI.InstancesOf("Win32_Process")
With Process
Call .GetOwner(strOwner, strDomain)
WScript.Echo "Name : " & .Name & _
vbCrLf & "Caption : " & .Caption & _
vbCrLf & "CreationClassName : " & .CreationClassName & _
vbCrLf & "CreationDate : " & .CreationDate & _
vbCrLf & "CSCreationClassName : " & .CSCreationClassName & _
vbCrLf & "CSName : " & .CSName & _
vbCrLf & "Description : " & .Description & _
vbCrLf & "ExecutablePath : " & .ExecutablePath & _
vbCrLf & "ExecutionState : " & .ExecutionState & _
vbCrLf & "Handle : " & .Handle & _
vbCrLf & "HandleCount : " & .HandleCount & _
vbCrLf & "InstallDate : " & .InstallDate & _
vbCrLf & "KernelModeTime : " & .KernelModeTime & _
vbCrLf & "MaximumWorkingSetSize : " & .MaximumWorkingSetSize & _
vbCrLf & "MinimumWorkingSetSize : " & .MinimumWorkingSetSize & _
vbCrLf & "OSCreationClassName : " & .OSCreationClassName & _
vbCrLf & "OSName : " & .OSName & _
vbCrLf & "OtherOperationCount : " & .OtherOperationCount & _
vbCrLf & "OtherTransferCount : " & .OtherTransferCount & _
vbCrLf & "PageFaults : " & .PageFaults & _
vbCrLf & "PageFileUsage : " & .PageFileUsage & _
vbCrLf & "ParentProcessId : " & .ParentProcessId & _
vbCrLf & "PeakPageFileUsage : " & .PeakPageFileUsage & _
vbCrLf & "PeakVirtualSize : " & .PeakVirtualSize & _
vbCrLf & "PeakWorkingSetSize : " & .PeakWorkingSetSize & _
vbCrLf & "Priority : " & .Priority & _
vbCrLf & "PrivatePageCount : " & .PrivatePageCount & _
vbCrLf & "ProcessId : " & .ProcessId & _
vbCrLf & "QuotaNonPagedPoolUsage : " & .QuotaNonPagedPoolUsage & _
vbCrLf & "QuotaPagedPoolUsage : " & .QuotaPagedPoolUsage & _
vbCrLf & "QuotaPeakNonPagedPoolUsage : " & .QuotaPeakNonPagedPoolUsage & _
vbCrLf & "QuotaPeakPagedPoolUsage : " & .QuotaPeakPagedPoolUsage & _
vbCrLf & "ReadOperationCount : " & .ReadOperationCount & _
vbCrLf & "ReadTransferCount : " & .ReadTransferCount & _
vbCrLf & "Domain : " & strDomain & _
vbCrLf & "Owner : " & strOwner
End With
Next
|
006. Excel マクロ実行
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run ("excel.exe")
Set objXLS = CreateObject("Excel.Application")
objXLS.Visible = True
objXLS.Workbooks.Open "C:\エクセル.xls"
objXLS.Run objXLS.ActiveWorkbook.Name & "!" & "マクロ"
objXLS.Quit
Set objXLS = Nothing
|
007. Access マクロ実行
Set objAccess = GetObject("C:\アクセス.mdb")
objAccess.DoCmd.RunMacro "マクロ"
objAccess.Quit
Set objAccess = Nothing
|
008. CD ドライブ取り出し
On Error Resume Next
Set objShell = CreateObject("Shell.Application")
set objDrive = objShell.NameSpace("D:\") '// D ドライブの場合
Set objItem = objDrive.Items.Item
objItem.InvokeVerb "取り出し(&J)"
|
009. 日付(YYYYMMDD) & 時刻(hhmmss)
'// Get execute time
strDate = Replace(Date, "/", "")
strTime = Right("0" & Replace(Time, ":", ""), 6)
MsgBox "strDate = " & strDate & vbCrLf & "strTime = " & strTime
|
010. VBScript から JScript を実行 + URI エンコード
'// Get URI encode value
Set objSC = CreateObject("ScriptControl")
objSC.Language = "JScript"
Set objCO = objSC.CodeObject
strURI = "http://maps.google.co.jp/maps?q=新宿区西新宿6丁目9"
a = "【エンコード前】" & vbCrLf & strURI & vbCrLf
strURI = objCO.encodeURI(strURI) '// 「:」、「/」、「;」、「?」はコード化されない。
a = a & "【URI エンコード】" & vbCrLf & strURI & vbCrLf
strURI = objCO.encodeURIComponent(strURI)
a = a & "【URI 完全エンコード】" & vbCrLf & strURI & vbCrLf
strDecode = objCO.decodeURIComponent(strURI)
a = a & "【デコード】" & vbCrLf & strDecode & vbCrLf
Set objSC = Nothing
Set objCO = Nothing
MsgBox a
|
011. WMIクラス/BIOS情報の取得
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")
For Each objBIOS In objWMI.ExecQuery("select * from Win32_BIOS")
a = a & vbCrLf & "Build Number : " & objBIOS.BuildNumber
a = a & vbCrLf & "Current Language : " & objBIOS.CurrentLanguage
a = a & vbCrLf & "Installable Languages : " & objBIOS.InstallableLanguages
a = a & vbCrLf & "Manufacturer : " & objBIOS.Manufacturer
a = a & vbCrLf & "Name : " & objBIOS.Name
a = a & vbCrLf & "Primary BIOS : " & objBIOS.PrimaryBIOS
a = a & vbCrLf & "Release Date : " & objBIOS.ReleaseDate
a = a & vbCrLf & "Serial Number : " & objBIOS.SerialNumber
a = a & vbCrLf & "SMBIOS Version : " & objBIOS.SMBIOSBIOSVersion
a = a & vbCrLf & "SMBIOS Major Version : " & objBIOS.SMBIOSMajorVersion
a = a & vbCrLf & "SMBIOS Minor Version : " & objBIOS.SMBIOSMinorVersion
a = a & vbCrLf & "SMBIOS Present : " & objBIOS.SMBIOSPresent
a = a & vbCrLf & "Status : " & objBIOS.Status
a = a & vbCrLf & "Version : " & objBIOS.Version
For i = 0 to Ubound(objBIOS.BiosCharacteristics)
a = a & vbCrLf & "BIOS Characteristics: " & objBIOS.BiosCharacteristics(i)
Next
Next
WScript.Echo a
|
012. WMIクラス/Win32_ComputerSystem
On Error Resume Next
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")
For Each objItem In objWMI.InstancesOf("Win32_ComputerSystem")
With objItem
a = ""
a = a & vbCrLf & "AdminPasswordStatus : " & .AdminPasswordStatus
a = a & vbCrLf & "AutomaticResetBootOption : " & .AutomaticResetBootOption
a = a & vbCrLf & "AutomaticResetCapability : " & .AutomaticResetCapability
a = a & vbCrLf & "BootOptionOnLimit : " & .BootOptionOnLimit
a = a & vbCrLf & "BootOptionOnWatchDog : " & .BootOptionOnWatchDog
a = a & vbCrLf & "BootROMSupported : " & .BootROMSupported
a = a & vbCrLf & "BootupState : " & .BootupState
a = a & vbCrLf & "Caption : " & .Caption
a = a & vbCrLf & "ChassisBootupState : " & .ChassisBootupState
a = a & vbCrLf & "CreationClassName : " & .CreationClassName
a = a & vbCrLf & "CurrentTimeZone : " & .CurrentTimeZone
a = a & vbCrLf & "DaylightInEffect : " & .DaylightInEffect
a = a & vbCrLf & "Description : " & .Description
a = a & vbCrLf & "DNSHostName : " & .DNSHostName
a = a & vbCrLf & "Domain : " & .Domain
a = a & vbCrLf & "DomainRole : " & .DomainRole
a = a & vbCrLf & "EnableDaylightSavingsTime : " & .EnableDaylightSavingsTime
a = a & vbCrLf & "FrontPanelResetStatus : " & .FrontPanelResetStatus
a = a & vbCrLf & "InfraredSupported : " & .InfraredSupported
a = a & vbCrLf & "InitialLoadInfo : " & .InitialLoadInfo
a = a & vbCrLf & "InstallDate : " & .InstallDate
a = a & vbCrLf & "KeyboardPasswordStatus : " & .KeyboardPasswordStatus
a = a & vbCrLf & "LastLoadInfo : " & .LastLoadInfo
a = a & vbCrLf & "Manufacturer : " & .Manufacturer
a = a & vbCrLf & "Model : " & .Model
a = a & vbCrLf & "Name : " & .Name
a = a & vbCrLf & "NameFormat : " & .NameFormat
a = a & vbCrLf & "NetworkServerModeEnabled : " & .NetworkServerModeEnabled
a = a & vbCrLf & "NumberOfProcessors : " & .NumberOfProcessors
a = a & vbCrLf & "PartOfDomain : " & .PartOfDomain
a = a & vbCrLf & "PauseAfterReset : " & .PauseAfterReset
a = a & vbCrLf & "PowerManagementSupported : " & .PowerManagementSupported
a = a & vbCrLf & "PowerOnPasswordStatus : " & .PowerOnPasswordStatus
a = a & vbCrLf & "PowerState : " & .PowerState
a = a & vbCrLf & "PowerSupplyState : " & .PowerSupplyState
a = a & vbCrLf & "PrimaryOwnerContact : " & .PrimaryOwnerContact
a = a & vbCrLf & "PrimaryOwnerName : " & .PrimaryOwnerName
a = a & vbCrLf & "ResetCapability : " & .ResetCapability
a = a & vbCrLf & "ResetCount : " & .ResetCount
a = a & vbCrLf & "ResetLimit : " & .ResetLimit
a = a & vbCrLf & "Status : " & .Status
a = a & vbCrLf & "SystemStartupDelay : " & .SystemStartupDelay
a = a & vbCrLf & "SystemStartupSetting : " & .SystemStartupSetting
a = a & vbCrLf & "SystemType : " & .SystemType
a = a & vbCrLf & "ThermalState : " & .ThermalState
a = a & vbCrLf & "TotalPhysicalMemory : " & .TotalPhysicalMemory
a = a & vbCrLf & "UserName : " & .UserName
a = a & vbCrLf & "WakeUpType : " & .WakeUpType
a = a & vbCrLf & "Workgroup : " & .Workgroup
If .Caption <> "" Then WScript.Echo a
End With
Next
|
013. WMIクラス/VRAM(ビデオメモリ)容量
On Error Resume Next
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")
For Each objVC In objWMI.InstancesOf("Win32_VideoController")
If objVC.VideoModeDescription <> "" Then
a = a & vbCrLf & "AcceleratorCapabilities : " & objVC.AcceleratorCapabilities
a = a & vbCrLf & "AdapterCompatibility : " & objVC.AdapterCompatibility
a = a & vbCrLf & "AdapterDACType : " & objVC.AdapterDACType
a = a & vbCrLf & "AdapterRAM : " & objVC.AdapterRAM
a = a & vbCrLf & "AdapterRAM [MB] : " & objVC.AdapterRAM / 1024 / 1024 & " [MB]"
a = a & vbCrLf & "Availability : " & objVC.Availability
a = a & vbCrLf & "CapabilityDescriptions : " & objVC.CapabilityDescriptions
a = a & vbCrLf & "Caption : " & objVC.Caption
a = a & vbCrLf & "ColorTableEntries : " & objVC.ColorTableEntries
a = a & vbCrLf & "ConfigManagerErrorCode : " & objVC.ConfigManagerErrorCode
a = a & vbCrLf & "ConfigManagerUserConfig : " & objVC.ConfigManagerUserConfig
a = a & vbCrLf & "CreationClassName : " & objVC.CreationClassName
a = a & vbCrLf & "CurrentBitsPerPixel : " & objVC.CurrentBitsPerPixel
a = a & vbCrLf & "CurrentHorizontalResolution : " & objVC.CurrentHorizontalResolution
a = a & vbCrLf & "CurrentNumberOfColors : " & objVC.CurrentNumberOfColors
a = a & vbCrLf & "CurrentNumberOfColumns : " & objVC.CurrentNumberOfColumns
a = a & vbCrLf & "CurrentNumberOfRows : " & objVC.CurrentNumberOfRows
a = a & vbCrLf & "CurrentRefreshRate : " & objVC.CurrentRefreshRate
a = a & vbCrLf & "CurrentScanMode : " & objVC.CurrentScanMode
a = a & vbCrLf & "CurrentVerticalResolution : " & objVC.CurrentVerticalResolution
a = a & vbCrLf & "Description : " & objVC.Description
a = a & vbCrLf & "DeviceID : " & objVC.DeviceID
a = a & vbCrLf & "DeviceSpecificPens : " & objVC.DeviceSpecificPens
a = a & vbCrLf & "DitherType : " & objVC.DitherType
a = a & vbCrLf & "DriverDate : " & objVC.DriverDate
a = a & vbCrLf & "DriverVersion : " & objVC.DriverVersion
a = a & vbCrLf & "ErrorCleared : " & objVC.ErrorCleared
a = a & vbCrLf & "ErrorDescription : " & objVC.ErrorDescription
a = a & vbCrLf & "ICMIntent : " & objVC.ICMIntent
a = a & vbCrLf & "ICMMethod : " & objVC.ICMMethod
a = a & vbCrLf & "InfFilename : " & objVC.InfFilename
a = a & vbCrLf & "InfSection : " & objVC.InfSection
a = a & vbCrLf & "InstallDate : " & objVC.InstallDate
a = a & vbCrLf & "InstalledDisplayDrivers : " & objVC.InstalledDisplayDrivers
a = a & vbCrLf & "LastErrorCode : " & objVC.LastErrorCode
a = a & vbCrLf & "MaxMemorySupported : " & objVC.MaxMemorySupported
a = a & vbCrLf & "MaxNumberControlled : " & objVC.MaxNumberControlled
a = a & vbCrLf & "MaxRefreshRate : " & objVC.MaxRefreshRate
a = a & vbCrLf & "MinRefreshRate : " & objVC.MinRefreshRate
a = a & vbCrLf & "Monochrome : " & objVC.Monochrome
a = a & vbCrLf & "Name : " & objVC.Name
a = a & vbCrLf & "NumberOfColorPlanes : " & objVC.NumberOfColorPlanes
a = a & vbCrLf & "NumberOfVideoPages : " & objVC.NumberOfVideoPages
a = a & vbCrLf & "PNPDeviceID : " & objVC.PNPDeviceID
a = a & vbCrLf & "PowerManagementCapabilities : " & objVC.PowerManagementCapabilities
a = a & vbCrLf & "PowerManagementSupported : " & objVC.PowerManagementSupported
a = a & vbCrLf & "ProtocolSupported : " & objVC.ProtocolSupported
a = a & vbCrLf & "ReservedSystemPaletteEntries : " & objVC.ReservedSystemPaletteEntries
a = a & vbCrLf & "SpecificationVersion : " & objVC.SpecificationVersion
a = a & vbCrLf & "Status : " & objVC.Status
a = a & vbCrLf & "StatusInfo : " & objVC.StatusInfo
a = a & vbCrLf & "SystemCreationClassName : " & objVC.SystemCreationClassName
a = a & vbCrLf & "SystemName : " & objVC.SystemName
a = a & vbCrLf & "SystemPaletteEntries : " & objVC.SystemPaletteEntries
a = a & vbCrLf & "TimeOfLastReset : " & objVC.TimeOfLastReset
a = a & vbCrLf & "VideoArchitecture : " & objVC.VideoArchitecture
a = a & vbCrLf & "VideoMemoryType : " & objVC.VideoMemoryType
a = a & vbCrLf & "VideoMode : " & objVC.VideoMode
a = a & vbCrLf & "VideoModeDescription : " & objVC.VideoModeDescription
a = a & vbCrLf & "VideoProcessor : " & objVC.VideoProcessor
End If
Next
WScript.Echo a
|
014. ODBCデータソース名(DSN)の取得
'// &H80000001 : -2147483647
'// &H80000002 : -2147483646
'// HKEY : Hive Key
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
'// Initial definition
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CURRENT_USER = &H80000001
strTitle = fso.GetBaseName(Wscript.ScriptFullName)
strPath = "Software\ODBC\ODBC.INI\ODBC Data Sources"
a = ""
strComputer = "."
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
'// System DSN
Call read_registry(HKEY_LOCAL_MACHINE, strPath)
'// User DSN
Call read_registry(HKEY_CURRENT_USER, strPath)
If a = "" Then a = "DNS が登録されていません。"
x = MsgBox(a, , strTitle)
Wscript.Quit
Function read_registry(strHKEY, strPath)
objReg.EnumValues strHKEY, strPath, aryNames, aryTypes
If Not IsArray(aryNames) Then Exit Function
If strHKEY = &H80000002 Then a = a & "-- System DSN --" & vbCrLf
If strHKEY = &H80000001 Then a = a & "-- User DSN --" & vbCrLf
For Each strName In aryNames
objReg.GetStringValue strHKEY, strPath, strName, strValue
a = a & strName & " [" & strValue & "]" & vbCrLf
Next
End Function
|
015. ドメインユーザ パスワード変更
▽その1(ドメコン省略)
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
objUser.ChangePassword "変更前パスワード", "変更後パスワード"
|
▽その2
Set objUser = GetObject("LDAP://[ドメイン or ドメインコントローラ]/CN=xxx,OU=xxx,OU=xxx,DC=xxx,DC=xxx")
objUser.ChangePassword "変更前パスワード", "変更後パスワード"
|
016. ローカルユーザ パスワード変更
'// 予めパスワードを変更する権限を持ったアカウントで接続しておく
'// 【接続例】
'// Set WshShell = CreateObject("WScript.Shell")
'// x = WshShell.Run("net use \\[コンピュータ名] /user:[ドメイン名]\[ユーザ名] [パスワード]", 0, 0)
'// ・・・ パスワード変更 ・・・
'// x = WshShell.Run("net use /d \\[コンピュータ名]", 0, True)
On Error Resume Next
strServer = "localhost"
strUser = "administrator"
strPass = "password"
'// Connect to target computer
Set objUser = GetObject("WinNT://" & strServer & "/" & strUser)
If Err.Number <> 0 Then Call error_msg("接続に失敗しました。")
'// Change password
objUser.SetPassword strPass
If Err.Number <> 0 Then Call error_msg("パスワードの変更に失敗しました。")
objUser.SetInfo
Set objUser = Nothing
MsgBox "パスワードを変更しました。"
'/*----------------------------------------------------------*
' * Sub-Routine (Error Message)
' *----------------------------------------------------------*/
Sub error_msg(strMsg)
strMsg = strMsg & vbCrLf & "Err.Number : " & CStr(Err.Number)
strMsg = strMsg & vbCrLf & "Description : " & Err.Description
MsgBox strMsg
WScript.Quit
End Sub
|
017. ドメインユーザ情報をテキストファイルに出力
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
strDomain = InputBox("Please enter a domainname", "Input")
If strDomain = "" Then WScript.Quit
'// Create output file
Set objFile = fso.CreateTextFile(strDomain & ".txt", True)
'// Header
a = "Name"
a = a & vbTab & "AccountDisabled"
a = a & vbTab & "AccountExpirationDate"
a = a & vbTab & "BadLoginAddress"
a = a & vbTab & "BadLoginCount"
a = a & vbTab & "Department"
a = a & vbTab & "Description"
a = a & vbTab & "Division"
a = a & vbTab & "EmailAddress"
a = a & vbTab & "EmployeeID"
a = a & vbTab & "FaxNumber"
a = a & vbTab & "FirstName"
a = a & vbTab & "FullName"
a = a & vbTab & "GraceLoginsAllowed"
a = a & vbTab & "GraceLoginsRemaining"
a = a & vbTab & "HomeDirectory"
a = a & vbTab & "HomePage"
a = a & vbTab & "IsAccountLocked"
a = a & vbTab & "Languages"
a = a & vbTab & "LastFailedLogin"
a = a & vbTab & "LastLogin"
a = a & vbTab & "LastLogoff"
a = a & vbTab & "LastName"
a = a & vbTab & "LoginHours"
a = a & vbTab & "LoginScript"
a = a & vbTab & "LoginWorkstations"
a = a & vbTab & "Manager"
a = a & vbTab & "MaxLogins"
a = a & vbTab & "MaxStorage"
a = a & vbTab & "NamePrefix"
a = a & vbTab & "NameSuffix"
a = a & vbTab & "OfficeLocations"
a = a & vbTab & "OtherName"
a = a & vbTab & "PasswordExpirationDate"
a = a & vbTab & "PasswordLastChanged"
a = a & vbTab & "PasswordMinimumLength"
a = a & vbTab & "PasswordRequired"
a = a & vbTab & "Picture"
a = a & vbTab & "PostalAddresses"
a = a & vbTab & "PostalCodes"
a = a & vbTab & "Profile"
a = a & vbTab & "RequireUniquePassword"
a = a & vbTab & "SeeAlso"
a = a & vbTab & "TelephoneHome"
a = a & vbTab & "TelephoneMobile"
a = a & vbTab & "TelephoneNumber"
a = a & vbTab & "TelephonePager"
a = a & vbTab & "Title"
objFile.WriteLine a
Set objComputer = GetObject("WinNT://" & strDomain)
objComputer.Filter = Array("User")
For Each usr In objComputer
a = usr.Name
a = a & vbTab: a = a & usr.AccountDisabled
a = a & vbTab: a = a & usr.AccountExpirationDate
a = a & vbTab: a = a & usr.BadLoginAddress
a = a & vbTab: a = a & usr.BadLoginCount
a = a & vbTab: a = a & usr.Department
a = a & vbTab: a = a & usr.Description
a = a & vbTab: a = a & usr.Division
a = a & vbTab: a = a & usr.EmailAddress
a = a & vbTab: a = a & usr.EmployeeID
a = a & vbTab: a = a & usr.FaxNumber
a = a & vbTab: a = a & usr.FirstName
a = a & vbTab: a = a & usr.FullName
a = a & vbTab: a = a & usr.GraceLoginsAllowed
a = a & vbTab: a = a & usr.GraceLoginsRemaining
a = a & vbTab: a = a & usr.HomeDirectory
a = a & vbTab: a = a & usr.HomePage
a = a & vbTab: a = a & usr.IsAccountLocked
a = a & vbTab: a = a & usr.Languages
a = a & vbTab: a = a & usr.LastFailedLogin
a = a & vbTab: a = a & usr.LastLogin
a = a & vbTab: a = a & usr.LastLogoff
a = a & vbTab: a = a & usr.LastName
a = a & vbTab: a = a & usr.LoginHours
a = a & vbTab: a = a & usr.LoginScript
a = a & vbTab: a = a & usr.LoginWorkstations
a = a & vbTab: a = a & usr.Manager
a = a & vbTab: a = a & usr.MaxLogins
a = a & vbTab: a = a & usr.MaxStorage
a = a & vbTab: a = a & usr.NamePrefix
a = a & vbTab: a = a & usr.NameSuffix
a = a & vbTab: a = a & usr.OfficeLocations
a = a & vbTab: a = a & usr.OtherName
a = a & vbTab: a = a & usr.PasswordExpirationDate
a = a & vbTab: a = a & usr.PasswordLastChanged
a = a & vbTab: a = a & usr.PasswordMinimumLength
a = a & vbTab: a = a & usr.PasswordRequired
a = a & vbTab: a = a & usr.Picture
a = a & vbTab: a = a & usr.PostalAddresses
a = a & vbTab: a = a & usr.PostalCodes
a = a & vbTab: a = a & usr.Profile
a = a & vbTab: a = a & usr.RequireUniquePassword
a = a & vbTab: a = a & usr.SeeAlso
a = a & vbTab: a = a & usr.TelephoneHome
a = a & vbTab: a = a & usr.TelephoneMobile
a = a & vbTab: a = a & usr.TelephoneNumber
a = a & vbTab: a = a & usr.TelephonePager
a = a & vbTab: a = a & usr.Title
objFile.WriteLine a
Next
objFile.Close
MsgBox "終わったよ!"
|
018. VBScript のインクルード
Set fso = CreateObject("Scripting.FileSystemObject")
Execute fso.OpenTextFile("xxx.vbs", 1, False).ReadAll()
|
019. IP アドレスの取得
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")
For Each nic In objWMI.ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=true")
If nic.IPAddress(0) <> "" Then WScript.Echo nic.IPAddress(0)
Next
|
020. Windows シャットダウン/再起動
x = MsgBox("Windows をシャットダウンします。よろしいですか?", 1)
If x <> 1 Then WScript.Quit
'// Windows 2000 シャットダウン
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}")
For Each objOS In objWMI.InstancesOf("Win32_OperatingSystem")
'// Log Off
' objOS.Win32Shutdown 0
'// Shutdown
' objOS.Win32Shutdown 1
'// Reboot
' objOS.Win32Shutdown 2
'// Forced Log Off
' objOS.Win32Shutdown 4
'// Forced Shutdown
' objOS.Win32Shutdown 5
'// Forced Reboot
' objOS.Win32Shutdown 6
'// Power Off
' objOS.Win32Shutdown 8
'// Forced Power Off
objOS.Win32Shutdown 12
Next
|
021. 「最近使ったファイル」のクリア
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile fso.BuildPath(WshShell.SpecialFolders("Recent"), "*.*")
|
022. タイマー (sleep)
t = InputBox("Wait する時間(分)を入力して下さい", "タイマー")
If t = "" Then WScript.Quit
WScript.Sleep (t * 60000)
|
023. サービスの起動/停止/削除
strComputer = "."
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objService = objWMI.ExecQuery("select * from Win32_Service where name = 'MSSQLSERVER'")
For Each objService In objService
'// Start service
objService.StartService()
'// Stop service
' objService.StopService()
'// Delte service
' objService.Delete()
Next
|
024. 環境変数の取得
Set WshShell = CreateObject("WScript.Shell")
WScript.Echo _
vbCrLf & "USERNAME : " & WshShell.ExpandEnvironmentStrings("%USERNAME%") & _
vbCrLf & "USERDOMAIN : " & WshShell.ExpandEnvironmentStrings("%USERDOMAIN%") & _
vbCrLf & "COMPUTERNAME : " & WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%") & _
vbCrLf & "APPDATA : " & WshShell.ExpandEnvironmentStrings("%APPDATA%") & _
vbCrLf & "windir : " & WshShell.ExpandEnvironmentStrings("%windir%") & _
vbCrLf
Set objEnv = WshShell.Environment("SYSTEM")
WScript.Echo _
vbCrLf & "NUMBER_OF_PROCESSORS : " & objEnv("NUMBER_OF_PROCESSORS") & _
vbCrLf & "PROCESSOR_ARCHITECTURE : " & objEnv("PROCESSOR_ARCHITECTURE") & _
vbCrLf & "PROCESSOR_IDENTIFIER : " & objEnv("PROCESSOR_IDENTIFIER") & _
vbCrLf & "PROCESSOR_LEVEL : " & objEnv("PROCESSOR_LEVEL") & _
vbCrLf & "PROCESSOR_REVISION : " & objEnv("PROCESSOR_REVISION") & _
vbCrLf & "OS : " & objEnv("OS") & _
vbCrLf & "COMSPEC : " & objEnv("COMSPEC") & _
vbCrLf & "HOMEDRIVE : " & objEnv("HOMEDRIVE") & _
vbCrLf
|
025. 実行パスの取得
Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetAbsolutePathName("")
|
026. ODBC接続/SQL(SELECT)結果をテキストファイルに出力
'// 実行するSQLファイルをドラッグ&ドロップ
'// Arguments : (0)SQL File
Set objArgs = WScript.Arguments
Set WshShell = CreateObject("WScript.Shell")
Set objADO = CreateObject("ADODB.Connection")
Set fso = CreateObject("Scripting.FileSystemObject")
'// Change current directory
WshShell.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName)
'// Initial definition
strTitle = fso.GetBaseName(WScript.ScriptFullName)
dsn = "MSSQL"
strUID = "sa"
'// SQL File
If objArgs.Count > 0 Then
strSqlFile = objArgs(0)
Else
strSqlFile = InputBox("SQLファイル名を入力して下さい", strTitle & " 1/4")
strSqlFile = Trim(strSqlFile)
If strSqlFile = "" Then WScript.Quit
End If
'// Output File
strOutFile = fso.GetBaseName(strSqlFile) & ".txt"
strOutFile = InputBox("出力ファイル名を入力して下さい", strTitle & " 2/4", strOutFile)
strOutFile = Trim(strOutFile)
If strOutFile = "" Then WScript.Quit
'// Input User ID
uid = InputBox("ユーザーIDを入力して下さい", strTitle & " 3/4", strUID)
uid = Trim(uid)
If uid = "" Then WScript.Quit
'// Input Password
pwd = InputBox("パスワードを入力して下さい", strTitle & " 4/4")
pwd = Trim(pwd)
If pwd = "" Then WScript.Quit
'// Start timer
StartTime = Now
'// Setup of connection definition
strCon = "DSN=" & dsn & "; UID=" & uid & "; PWD=" & pwd
'// Create execution SQL
Set objReadFile = fso.OpenTextFile(strSqlFile, 1, False)
strSQL = objReadFile.ReadAll()
objReadFile.Close
'// Unrestricted connection timeout
objADO.CommandTimeout = 0
'// Connect to database
objADO.Open strCon
'// Record count
rc = 0
'// Execute SQL
Set rs = objADO.Execute(strSQL)
'// Output to text file
If rs.EOF Then
x = MsgBox("該当データがありません。" & vbCrLf & vbCrLf & strSqlFile, 64, strTitle)
WScript.Quit
Else
'// Create output file
Set objWriteFile = fso.CreateTextFile(strOutFile, True)
'// Get number of fields
fc = rs.Fields.Count - 1
'// Output column name
a = ""
For i = 0 To fc
a = a & rs.Fields(i).Name
If i < fc Then a = a & Chr(9)
Next
objWriteFile.WriteLine (a)
'// Output data
Do Until rs.EOF
a = ""
For i = 0 To fc
a = a & Trim(rs.Fields(i).Value)
If i < fc Then a = a & Chr(9)
Next
a = Replace(a, Chr(0), "")
objWriteFile.WriteLine (a)
rc = rc + 1
rs.Movenext
Loop
objWriteFile.Close
End If
'// Disconnect from database
objADO.Close
'// End timer
TimeIt = FormatDateTime((Now - StartTime), 3)
'// Message
strMSG = "検索処理が終了しました。"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & rc & " 件"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & "処理時間は、( " & TimeIt & " 秒) だったよ~ん。"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & "THANK YOU! ┐(´◇`)┌"
strMSG = strMSG & vbCrLf & vbCrLf & vbCrLf & ">> " & strOutFile
'// Show message
x = MsgBox(strMSG, 64, strTitle)
WScript.Quit
|
027. ODBC接続/SQL(DELETE/UPDAETE等)実行
'// 実行するSQLファイルをドラッグ&ドロップ
'// Arguments : (0)SQL File
Set objArgs = WScript.Arguments
Set WshShell = CreateObject("WScript.Shell")
Set objADO = CreateObject("ADODB.Connection")
Set fso = CreateObject("Scripting.FileSystemObject")
'// Initial definition
strTitle = fso.GetBaseName(WScript.ScriptFullName)
dsn = "MSSQL"
strUID = "sa"
'// SQL File
If objArgs.Count > 0 Then
strSqlFile = objArgs(0)
Else
strSqlFile = InputBox("SQLファイル名を入力して下さい", strTitle & " 1/3")
strSqlFile = Trim(strSqlFile)
If strSqlFile = "" Then WScript.Quit
End If
'// Input User ID
uid = InputBox("ユーザーIDを入力して下さい", strTitle & " 2/3", strUID)
uid = Trim(uid)
If uid = "" Then WScript.Quit
'// Input Password
pwd = InputBox("パスワードを入力して下さい", strTitle & " 3/3")
pwd = Trim(pwd)
If pwd = "" Then WScript.Quit
'// Start timer
StartTime = Now
'// Setup of connection definition
strCon = "DSN=" & dsn & "; UID=" & uid & "; PWD=" & pwd
'// Create execution SQL
Set objReadFile = fso.OpenTextFile(strSqlFile, 1, False)
strSQL = objReadFile.ReadAll()
objReadFile.Close
'// Unrestricted connection timeout
objADO.CommandTimeout = 0
'// Connect to database
objADO.Open strCon
'// Execute SQL
Set rs = objADO.Execute(strSQL)
'// ADO properties [オマケ]
a = "-- ADO properties --"
a = a & vbCrLf & "ConnectionString : " & objADO.ConnectionString
a = a & vbCrLf & "Attributes : " & objADO.Attributes
a = a & vbCrLf & "CommandTimeout : " & objADO.CommandTimeout
a = a & vbCrLf & "ConnectionTimeout : " & objADO.ConnectionTimeout
a = a & vbCrLf & "CursorLocation : " & objADO.CursorLocation
a = a & vbCrLf & "DefaultDatabase : " & objADO.DefaultDatabase
a = a & vbCrLf & "IsolationLevel : " & objADO.IsolationLevel
a = a & vbCrLf & "Mode : " & objADO.Mode
a = a & vbCrLf & "Provider : " & objADO.Provider
a = a & vbCrLf & "State : " & objADO.State
a = a & vbCrLf & "Version : " & objADO.Version
MsgBox a
'// Recordset properties [オマケ]
On Error Resume Next
a = "-- Recordset properties --"
a = a & vbCrLf & "AbsolutePage : " & rs.AbsolutePage
a = a & vbCrLf & "AbsolutePosition : " & rs.AbsolutePosition
a = a & vbCrLf & "ActiveCommand : " & rs.ActiveCommand
a = a & vbCrLf & "ActiveConnection : " & rs.ActiveConnection
a = a & vbCrLf & "BOF : " & rs.BOF
a = a & vbCrLf & "Bookmark : " & rs.Bookmark
a = a & vbCrLf & "CacheSize : " & rs.CacheSize
a = a & vbCrLf & "CursorLocation : " & rs.CursorLocation
a = a & vbCrLf & "CursorType : " & rs.CursorType
a = a & vbCrLf & "DataMember : " & rs.DataMember
a = a & vbCrLf & "DataSource : " & rs.DataSource
a = a & vbCrLf & "EditMode : " & rs.EditMode
a = a & vbCrLf & "EOF : " & rs.EOF
a = a & vbCrLf & "Filter : " & rs.Filter
a = a & vbCrLf & "Index : " & rs.Index
a = a & vbCrLf & "LockType : " & rs.LockType
a = a & vbCrLf & "MarshalOptions : " & rs.MarshalOptions
a = a & vbCrLf & "MaxRecords : " & rs.MaxRecords
a = a & vbCrLf & "PageCount : " & rs.PageCount
a = a & vbCrLf & "PageSize : " & rs.PageSize
a = a & vbCrLf & "RecordCount : " & rs.RecordCount
a = a & vbCrLf & "Sort : " & rs.Sort
a = a & vbCrLf & "Source : " & rs.Source
a = a & vbCrLf & "State : " & rs.State
a = a & vbCrLf & "Status : " & rs.Status
a = a & vbCrLf & "StayInSync : " & rs.StayInSync
On Error GoTo 0
MsgBox a
'// Disconnect from database
objADO.Close
'// End timer
TimeIt = FormatDateTime((Now - StartTime), 3)
'// Message
strMSG = "処理が終了しました。"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & "処理時間は、( " & TimeIt & " 秒) だったよ~ん。"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & "THANK YOU! (`へ´)v"
strMSG = strMSG & vbCrLf & vbCrLf & vbCrLf & ">> " & strSqlFile
'// Show message
x = MsgBox(strMSG, 64, strTitle)
WScript.Quit
|
028. LDAP情報の取得
'// Initial definition
Set fso = CreateObject("Scripting.FileSystemObject")
strTitle = fso.GetBaseName(WScript.ScriptFullName)
str00 = "[アカウント]を入力して下さい"
str00 = str00 & vbCrLf
str00 = str00 & vbCrLf & "0:ログインアカウント情報"
str00 = str00 & vbCrLf & "1:クライアント情報"
str00 = str00 & vbCrLf & "※何も入力しないとログインアカウント情報を表示します。"
strUser = InputBox(str00, strTitle, 0)
strUser = Trim(strUser)
If strUser = "" Or strUser = "0" Or strUser = "1" Then
Set objSysInfo = CreateObject("ADSystemInfo")
str00 = "-- ログイン情報 --"
str00 = str00 & vbCrLf & "User name : " & objSysInfo.UserName
str00 = str00 & vbCrLf & "Computer name : " & objSysInfo.ComputerName
str00 = str00 & vbCrLf & "Site name : " & objSysInfo.SiteName
str00 = str00 & vbCrLf & "Domain short name : " & objSysInfo.DomainShortName
str00 = str00 & vbCrLf & "Domain DNS name : " & objSysInfo.DomainDNSName
str00 = str00 & vbCrLf & "Forest DNS name : " & objSysInfo.ForestDNSName
str00 = str00 & vbCrLf & "PDC role owner : " & objSysInfo.PDCRoleOwner
str00 = str00 & vbCrLf & "Schema role owner : " & objSysInfo.SchemaRoleOwner
str00 = str00 & vbCrLf & "Domain is in native mode : " & objSysInfo.IsNativeMode
MsgBox str00
If strUser = "1" Then
strUser = "LDAP://" & objSysInfo.ComputerName
Else
strUser = "LDAP://" & objSysInfo.UserName
End If
Else
strADsPath = GetObject("GC://RootDSE").Get("defaultNamingContext")
flg_ok = "NG"
strDC = strADsPath: Call get_adspath(strDC)
strDC = "[追加ドメイン]": If flg_ok = "NG" Then Call get_adspath(strDC)
strDC = "[追加ドメコン]": If flg_ok = "NG" Then Call get_adspath(strDC)
If flg_ok = "NG" Then
MsgBox strUser & " は存在しません。", 64, strTitle
WScript.Quit
End If
End If
Call get_information(strUser)
WScript.Quit
Function get_adspath(strDC)
Set objCon = CreateObject("ADODB.Connection")
objCon.provider = "ADsDSOObject"
objCon.Open "Active Directory Provider"
Set objCmd = CreateObject("ADODB.Command")
Set objCmd.ActiveConnection = objCon
strSQL = "select * from 'LDAP://" & strDC & "' where cn='" & strUser & "'"
objCmd.CommandText = strSQL
Set objRs = objCmd.Execute
If objRs.EOF Then Exit Function
str00 = "-- ADsPath 情報 --"
str00 = str00 & vbCrLf & "Fields.Count = " & objRs.Fields.Count
str00 = str00 & vbCrLf & "Fields(0).Name = " & objRs.Fields(0).Name
str00 = str00 & vbCrLf & "Fields(0).Value = " & objRs.Fields(0).Value
MsgBox str00
strUser = objRs(0)
flg_ok = "OK"
objRs.Close
objCon.Close
End Function
Function get_information(strUser)
On Error Resume Next
Set objUser = GetObject(strUser)
a = "-- AD情報 --"
str00 = str00 & vbCrLf & "cn : " & objUser.Get("cn")
str00 = str00 & vbCrLf & "PasswordLastChanged : " & objUser.PasswordLastChanged
str00 = str00 & vbCrLf & "aCSPolicyName : " & objUser.Get("aCSPolicyName")
str00 = str00 & vbCrLf & "maxStorage : " & objUser.Get("maxStorage")
str00 = str00 & vbCrLf & "memberOf : " & objUser.Get("memberOf")
str00 = str00 & vbCrLf & "mhsORAddress : " & objUser.Get("mhsORAddress")
str00 = str00 & vbCrLf & "middleName : " & objUser.Get("middleName")
str00 = str00 & vbCrLf & "mobile : " & objUser.Get("mobile")
str00 = str00 & vbCrLf & "modifyTimeStamp : " & objUser.Get("modifyTimeStamp")
str00 = str00 & vbCrLf & "mS-DS-ConsistencyChildCount : " & objUser.Get("mS-DS-ConsistencyChildCount")
str00 = str00 & vbCrLf & "mS-DS-ConsistencyGuid : " & objUser.Get("mS-DS-ConsistencyGuid")
str00 = str00 & vbCrLf & "mS-DS-CreatorSID : " & objUser.Get("mS-DS-CreatorSID")
str00 = str00 & vbCrLf & "msCOM-PartitionSetLink : " & objUser.Get("msCOM-PartitionSetLink")
str00 = str00 & vbCrLf & "adminCount : " & objUser.Get("adminCount")
str00 = str00 & vbCrLf & "msCOM-UserLink : " & objUser.Get("msCOM-UserLink")
str00 = str00 & vbCrLf & "msCOM-UserPartitionSetLink : " & objUser.Get("msCOM-UserPartitionSetLink")
str00 = str00 & vbCrLf & "msDFSR-ComputerReferenceBL : " & objUser.Get("msDFSR-ComputerReferenceBL")
str00 = str00 & vbCrLf & "msDFSR-MemberReferenceBL : " & objUser.Get("msDFSR-MemberReferenceBL")
str00 = str00 & vbCrLf & "msDRM-IdentityCertificate : " & objUser.Get("msDRM-IdentityCertificate")
str00 = str00 & vbCrLf & "msDS-AllowedToDelegateTo : " & objUser.Get("msDS-AllowedToDelegateTo")
str00 = str00 & vbCrLf & "msDS-Approx-Immed-Subordinates : " & objUser.Get("msDS-Approx-Immed-Subordinates")
str00 = str00 & vbCrLf & "msDS-Cached-Membership : " & objUser.Get("msDS-Cached-Membership")
str00 = str00 & vbCrLf & "msDS-Cached-Membership-Time-Stamp : " & objUser.Get("msDS-Cached-Membership-Time-Stamp")
str00 = str00 & vbCrLf & "msDS-KeyVersionNumber : " & objUser.Get("msDS-KeyVersionNumber")
str00 = str00 & vbCrLf & "adminDescription : " & objUser.Get("adminDescription")
str00 = str00 & vbCrLf & "msDs-masteredBy : " & objUser.Get("msDs-masteredBy")
str00 = str00 & vbCrLf & "msDS-MembersForAzRoleBL : " & objUser.Get("msDS-MembersForAzRoleBL")
str00 = str00 & vbCrLf & "msDS-NCReplCursors : " & objUser.Get("msDS-NCReplCursors")
str00 = str00 & vbCrLf & "msDS-NCReplInboundNeighbors : " & objUser.Get("msDS-NCReplInboundNeighbors")
str00 = str00 & vbCrLf & "msDS-NCReplOutboundNeighbors : " & objUser.Get("msDS-NCReplOutboundNeighbors")
str00 = str00 & vbCrLf & "msDS-NonMembersBL : " & objUser.Get("msDS-NonMembersBL")
str00 = str00 & vbCrLf & "msDS-ObjectReferenceBL : " & objUser.Get("msDS-ObjectReferenceBL")
str00 = str00 & vbCrLf & "msDS-OperationsForAzRoleBL : " & objUser.Get("msDS-OperationsForAzRoleBL")
str00 = str00 & vbCrLf & "msDS-OperationsForAzTaskBL : " & objUser.Get("msDS-OperationsForAzTaskBL")
str00 = str00 & vbCrLf & "msDS-ReplAttributeMetaData : " & objUser.Get("msDS-ReplAttributeMetaData")
str00 = str00 & vbCrLf & "adminDisplayName : " & objUser.Get("adminDisplayName")
str00 = str00 & vbCrLf & "msDS-ReplValueMetaData : " & objUser.Get("msDS-ReplValueMetaData")
str00 = str00 & vbCrLf & "msDS-Site-Affinity : " & objUser.Get("msDS-Site-Affinity")
str00 = str00 & vbCrLf & "msDS-SourceObjectDN : " & objUser.Get("msDS-SourceObjectDN")
str00 = str00 & vbCrLf & "msDS-TasksForAzRoleBL : " & objUser.Get("msDS-TasksForAzRoleBL")
str00 = str00 & vbCrLf & "msDS-TasksForAzTaskBL : " & objUser.Get("msDS-TasksForAzTaskBL")
str00 = str00 & vbCrLf & "msDS-User-Account-Control-Computed : " & objUser.Get("msDS-User-Account-Control-Computed")
str00 = str00 & vbCrLf & "msExchAssistantName : " & objUser.Get("msExchAssistantName")
str00 = str00 & vbCrLf & "msExchHouseIdentifier : " & objUser.Get("msExchHouseIdentifier")
str00 = str00 & vbCrLf & "msExchLabeledURI : " & objUser.Get("msExchLabeledURI")
str00 = str00 & vbCrLf & "msIIS-FTPDir : " & objUser.Get("msIIS-FTPDir")
str00 = str00 & vbCrLf & "allowedAttributes : " & objUser.Get("allowedAttributes")
str00 = str00 & vbCrLf & "msIIS-FTPRoot : " & objUser.Get("msIIS-FTPRoot")
str00 = str00 & vbCrLf & "mSMQDigests : " & objUser.Get("mSMQDigests")
str00 = str00 & vbCrLf & "mSMQDigestsMig : " & objUser.Get("mSMQDigestsMig")
str00 = str00 & vbCrLf & "mSMQSignCertificates : " & objUser.Get("mSMQSignCertificates")
str00 = str00 & vbCrLf & "mSMQSignCertificatesMig : " & objUser.Get("mSMQSignCertificatesMig")
str00 = str00 & vbCrLf & "msNPAllowDialin : " & objUser.Get("msNPAllowDialin")
str00 = str00 & vbCrLf & "msNPCallingStationID : " & objUser.Get("msNPCallingStationID")
str00 = str00 & vbCrLf & "msNPSavedCallingStationID : " & objUser.Get("msNPSavedCallingStationID")
str00 = str00 & vbCrLf & "msRADIUSCallbackNumber : " & objUser.Get("msRADIUSCallbackNumber")
str00 = str00 & vbCrLf & "msRADIUSFramedIPAddress : " & objUser.Get("msRADIUSFramedIPAddress")
str00 = str00 & vbCrLf & "allowedAttributesEffective : " & objUser.Get("allowedAttributesEffective")
str00 = str00 & vbCrLf & "msRADIUSFramedRoute : " & objUser.Get("msRADIUSFramedRoute")
str00 = str00 & vbCrLf & "msRADIUSServiceType : " & objUser.Get("msRADIUSServiceType")
str00 = str00 & vbCrLf & "msRASSavedCallbackNumber : " & objUser.Get("msRASSavedCallbackNumber")
str00 = str00 & vbCrLf & "msRASSavedFramedIPAddress : " & objUser.Get("msRASSavedFramedIPAddress")
str00 = str00 & vbCrLf & "msRASSavedFramedRoute : " & objUser.Get("msRASSavedFramedRoute")
str00 = str00 & vbCrLf & "msSFU30Name : " & objUser.Get("msSFU30Name")
str00 = str00 & vbCrLf & "msSFU30NisDomain : " & objUser.Get("msSFU30NisDomain")
str00 = str00 & vbCrLf & "msSFU30PosixMemberOf : " & objUser.Get("msSFU30PosixMemberOf")
str00 = str00 & vbCrLf & "name : " & objUser.Get("name")
str00 = str00 & vbCrLf & "netbootSCPBL : " & objUser.Get("netbootSCPBL")
str00 = str00 & vbCrLf & "allowedChildClasses : " & objUser.Get("allowedChildClasses")
str00 = str00 & vbCrLf & "networkAddress : " & objUser.Get("networkAddress")
str00 = str00 & vbCrLf & "nonSecurityMemberBL : " & objUser.Get("nonSecurityMemberBL")
str00 = str00 & vbCrLf & "ntPwdHistory : " & objUser.Get("ntPwdHistory")
str00 = str00 & vbCrLf & "o : " & objUser.Get("o")
str00 = str00 & vbCrLf & "objectGUID : " & objUser.Get("objectGUID")
str00 = str00 & vbCrLf & "objectVersion : " & objUser.Get("objectVersion")
str00 = str00 & vbCrLf & "operatorCount : " & objUser.Get("operatorCount")
str00 = str00 & vbCrLf & "otherFacsimileTelephoneNumber : " & objUser.Get("otherFacsimileTelephoneNumber")
str00 = str00 & vbCrLf & "otherHomePhone : " & objUser.Get("otherHomePhone")
str00 = str00 & vbCrLf & "otherIpPhone : " & objUser.Get("otherIpPhone")
str00 = str00 & vbCrLf & "allowedChildClassesEffective : " & objUser.Get("allowedChildClassesEffective")
str00 = str00 & vbCrLf & "otherLoginWorkstations : " & objUser.Get("otherLoginWorkstations")
str00 = str00 & vbCrLf & "otherMailbox : " & objUser.Get("otherMailbox")
str00 = str00 & vbCrLf & "otherMobile : " & objUser.Get("otherMobile")
str00 = str00 & vbCrLf & "otherPager : " & objUser.Get("otherPager")
str00 = str00 & vbCrLf & "otherTelephone : " & objUser.Get("otherTelephone")
str00 = str00 & vbCrLf & "otherWellKnownObjects : " & objUser.Get("otherWellKnownObjects")
str00 = str00 & vbCrLf & "ou : " & objUser.Get("ou")
str00 = str00 & vbCrLf & "ownerBL : " & objUser.Get("ownerBL")
str00 = str00 & vbCrLf & "pager : " & objUser.Get("pager")
str00 = str00 & vbCrLf & "partialAttributeDeletionList : " & objUser.Get("partialAttributeDeletionList")
str00 = str00 & vbCrLf & "altSecurityIdentities : " & objUser.Get("altSecurityIdentities")
str00 = str00 & vbCrLf & "partialAttributeSet : " & objUser.Get("partialAttributeSet")
str00 = str00 & vbCrLf & "personalTitle : " & objUser.Get("personalTitle")
str00 = str00 & vbCrLf & "photo : " & objUser.Get("photo")
str00 = str00 & vbCrLf & "physicalDeliveryOfficeName : " & objUser.Get("physicalDeliveryOfficeName")
str00 = str00 & vbCrLf & "possibleInferiors : " & objUser.Get("possibleInferiors")
str00 = str00 & vbCrLf & "postalAddress : " & objUser.Get("postalAddress")
str00 = str00 & vbCrLf & "postalCode : " & objUser.Get("postalCode")
str00 = str00 & vbCrLf & "postOfficeBox : " & objUser.Get("postOfficeBox")
str00 = str00 & vbCrLf & "preferredDeliveryMethod : " & objUser.Get("preferredDeliveryMethod")
str00 = str00 & vbCrLf & "preferredLanguage : " & objUser.Get("preferredLanguage")
str00 = str00 & vbCrLf & "assistant : " & objUser.Get("assistant")
str00 = str00 & vbCrLf & "preferredOU : " & objUser.Get("preferredOU")
str00 = str00 & vbCrLf & "primaryGroupID : " & objUser.Get("primaryGroupID")
str00 = str00 & vbCrLf & "primaryInternationalISDNNumber : " & objUser.Get("primaryInternationalISDNNumber")
str00 = str00 & vbCrLf & "primaryTelexNumber : " & objUser.Get("primaryTelexNumber")
str00 = str00 & vbCrLf & "profilePath : " & objUser.Get("profilePath")
str00 = str00 & vbCrLf & "proxiedObjectName : " & objUser.Get("proxiedObjectName")
str00 = str00 & vbCrLf & "proxyAddresses : " & objUser.Get("proxyAddresses")
str00 = str00 & vbCrLf & "pwdLastSet : " & objUser.Get("pwdLastSet")
str00 = str00 & vbCrLf & "queryPolicyBL : " & objUser.Get("queryPolicyBL")
str00 = str00 & vbCrLf & "registeredAddress : " & objUser.Get("registeredAddress")
str00 = str00 & vbCrLf & "instanceType : " & objUser.Get("instanceType")
str00 = str00 & vbCrLf & "attributeCertificateAttribute : " & objUser.Get("attributeCertificateAttribute")
str00 = str00 & vbCrLf & "replPropertyMetaData : " & objUser.Get("replPropertyMetaData")
str00 = str00 & vbCrLf & "replUpToDateVector : " & objUser.Get("replUpToDateVector")
str00 = str00 & vbCrLf & "repsFrom : " & objUser.Get("repsFrom")
str00 = str00 & vbCrLf & "repsTo : " & objUser.Get("repsTo")
str00 = str00 & vbCrLf & "revision : " & objUser.Get("revision")
str00 = str00 & vbCrLf & "rid : " & objUser.Get("rid")
str00 = str00 & vbCrLf & "roomNumber : " & objUser.Get("roomNumber")
str00 = str00 & vbCrLf & "sAMAccountType : " & objUser.Get("sAMAccountType")
str00 = str00 & vbCrLf & "scriptPath : " & objUser.Get("scriptPath")
str00 = str00 & vbCrLf & "sDRightsEffective : " & objUser.Get("sDRightsEffective")
str00 = str00 & vbCrLf & "audio : " & objUser.Get("audio")
str00 = str00 & vbCrLf & "secretary : " & objUser.Get("secretary")
str00 = str00 & vbCrLf & "securityIdentifier : " & objUser.Get("securityIdentifier")
str00 = str00 & vbCrLf & "seeAlso : " & objUser.Get("seeAlso")
str00 = str00 & vbCrLf & "serialNumber : " & objUser.Get("serialNumber")
str00 = str00 & vbCrLf & "serverReferenceBL : " & objUser.Get("serverReferenceBL")
str00 = str00 & vbCrLf & "servicePrincipalName : " & objUser.Get("servicePrincipalName")
str00 = str00 & vbCrLf & "shadowExpire : " & objUser.Get("shadowExpire")
str00 = str00 & vbCrLf & "shadowFlag : " & objUser.Get("shadowFlag")
str00 = str00 & vbCrLf & "shadowInactive : " & objUser.Get("shadowInactive")
str00 = str00 & vbCrLf & "shadowLastChange : " & objUser.Get("shadowLastChange")
str00 = str00 & vbCrLf & "badPasswordTime : " & objUser.Get("badPasswordTime")
str00 = str00 & vbCrLf & "shadowMax : " & objUser.Get("shadowMax")
str00 = str00 & vbCrLf & "shadowMin : " & objUser.Get("shadowMin")
str00 = str00 & vbCrLf & "shadowWarning : " & objUser.Get("shadowWarning")
str00 = str00 & vbCrLf & "showInAddressBook : " & objUser.Get("showInAddressBook")
str00 = str00 & vbCrLf & "showInAdvancedViewOnly : " & objUser.Get("showInAdvancedViewOnly")
str00 = str00 & vbCrLf & "sIDHistory : " & objUser.Get("sIDHistory")
str00 = str00 & vbCrLf & "siteObjectBL : " & objUser.Get("siteObjectBL")
str00 = str00 & vbCrLf & "sn : " & objUser.Get("sn") 'ラスト ネーム (Last Name)
str00 = str00 & vbCrLf & "st : " & objUser.Get("st")
str00 = str00 & vbCrLf & "street : " & objUser.Get("street")
str00 = str00 & vbCrLf & "badPwdCount : " & objUser.Get("badPwdCount")
str00 = str00 & vbCrLf & "streetAddress : " & objUser.Get("streetAddress")
str00 = str00 & vbCrLf & "structuralObjectClass : " & objUser.Get("structuralObjectClass")
str00 = str00 & vbCrLf & "subRefs : " & objUser.Get("subRefs")
str00 = str00 & vbCrLf & "subSchemaSubEntry : " & objUser.Get("subSchemaSubEntry")
str00 = str00 & vbCrLf & "supplementalCredentials : " & objUser.Get("supplementalCredentials")
str00 = str00 & vbCrLf & "systemFlags : " & objUser.Get("systemFlags")
str00 = str00 & vbCrLf & "telephoneNumber : " & objUser.Get("telephoneNumber")
str00 = str00 & vbCrLf & "teletexTerminalIdentifier : " & objUser.Get("teletexTerminalIdentifier")
str00 = str00 & vbCrLf & "telexNumber : " & objUser.Get("telexNumber")
str00 = str00 & vbCrLf & "terminalServer : " & objUser.Get("terminalServer")
str00 = str00 & vbCrLf & "bridgeheadServerListBL : " & objUser.Get("bridgeheadServerListBL")
str00 = str00 & vbCrLf & "textEncodedORAddress : " & objUser.Get("textEncodedORAddress")
str00 = str00 & vbCrLf & "thumbnailLogo : " & objUser.Get("thumbnailLogo")
str00 = str00 & vbCrLf & "thumbnailPhoto : " & objUser.Get("thumbnailPhoto")
str00 = str00 & vbCrLf & "title : " & objUser.Get("title")
str00 = str00 & vbCrLf & "tokenGroups : " & objUser.Get("tokenGroups")
str00 = str00 & vbCrLf & "tokenGroupsGlobalAndUniversal : " & objUser.Get("tokenGroupsGlobalAndUniversal")
str00 = str00 & vbCrLf & "tokenGroupsNoGCAcceptable : " & objUser.Get("tokenGroupsNoGCAcceptable")
str00 = str00 & vbCrLf & "uid : " & objUser.Get("uid")
str00 = str00 & vbCrLf & "uidNumber : " & objUser.Get("uidNumber")
str00 = str00 & vbCrLf & "unicodePwd : " & objUser.Get("unicodePwd")
str00 = str00 & vbCrLf & "businessCategory : " & objUser.Get("businessCategory")
str00 = str00 & vbCrLf & "unixHomeDirectory : " & objUser.Get("unixHomeDirectory")
str00 = str00 & vbCrLf & "unixUserPassword : " & objUser.Get("unixUserPassword")
str00 = str00 & vbCrLf & "url : " & objUser.Get("url")
str00 = str00 & vbCrLf & "userAccountControl : " & objUser.Get("userAccountControl")
str00 = str00 & vbCrLf & "userCert : " & objUser.Get("userCert")
str00 = str00 & vbCrLf & "userCertificate : " & objUser.Get("userCertificate")
' str00 = str00 & vbCrLf & "userParameters : " & objUser.Get("userParameters")
str00 = str00 & vbCrLf & "userPassword : " & objUser.userPassword
str00 = str00 & vbCrLf & "userPKCS12 : " & objUser.Get("userPKCS12")
str00 = str00 & vbCrLf & "userPrincipalName : " & objUser.Get("userPrincipalName")
str00 = str00 & vbCrLf & "c : " & objUser.Get("c")
str00 = str00 & vbCrLf & "userSharedFolder : " & objUser.Get("userSharedFolder")
str00 = str00 & vbCrLf & "userSharedFolderOther : " & objUser.Get("userSharedFolderOther")
str00 = str00 & vbCrLf & "userSMIMECertificate : " & objUser.Get("userSMIMECertificate")
str00 = str00 & vbCrLf & "userWorkstations : " & objUser.Get("userWorkstations")
str00 = str00 & vbCrLf & "uSNChanged : " & objUser.Get("uSNChanged")
str00 = str00 & vbCrLf & "uSNCreated : " & objUser.Get("uSNCreated")
str00 = str00 & vbCrLf & "uSNDSALastObjRemoved : " & objUser.Get("uSNDSALastObjRemoved")
str00 = str00 & vbCrLf & "USNIntersite : " & objUser.Get("USNIntersite")
str00 = str00 & vbCrLf & "uSNLastObjRem : " & objUser.Get("uSNLastObjRem")
str00 = str00 & vbCrLf & "uSNSource : " & objUser.Get("uSNSource")
str00 = str00 & vbCrLf & "canonicalName : " & objUser.Get("canonicalName")
str00 = str00 & vbCrLf & "wbemPath : " & objUser.Get("wbemPath")
str00 = str00 & vbCrLf & "wellKnownObjects : " & objUser.Get("wellKnownObjects")
str00 = str00 & vbCrLf & "whenChanged : " & objUser.Get("whenChanged")
str00 = str00 & vbCrLf & "whenCreated : " & objUser.Get("whenCreated")
str00 = str00 & vbCrLf & "wWWHomePage : " & objUser.Get("wWWHomePage")
str00 = str00 & vbCrLf & "x121Address : " & objUser.Get("x121Address")
str00 = str00 & vbCrLf & "x500uniqueIdentifier : " & objUser.Get("x500uniqueIdentifier")
str00 = str00 & vbCrLf & "carLicense : " & objUser.Get("carLicense")
str00 = str00 & vbCrLf & "co : " & objUser.Get("co")
str00 = str00 & vbCrLf & "nTSecurityDescriptor : " & objUser.Get("nTSecurityDescriptor")
str00 = str00 & vbCrLf & "codePage : " & objUser.Get("codePage")
str00 = str00 & vbCrLf & "comment : " & objUser.Get("comment")
str00 = str00 & vbCrLf & "company : " & objUser.Get("company")
str00 = str00 & vbCrLf & "controlAccessRights : " & objUser.Get("controlAccessRights")
str00 = str00 & vbCrLf & "countryCode : " & objUser.Get("countryCode")
str00 = str00 & vbCrLf & "createTimeStamp : " & objUser.Get("createTimeStamp")
str00 = str00 & vbCrLf & "dBCSPwd : " & objUser.Get("dBCSPwd")
str00 = str00 & vbCrLf & "defaultClassStore : " & objUser.Get("defaultClassStore")
str00 = str00 & vbCrLf & "department : " & objUser.Get("department")
str00 = str00 & vbCrLf & "departmentNumber : " & objUser.Get("departmentNumber")
str00 = str00 & vbCrLf & "objectCategory : " & objUser.Get("objectCategory")
str00 = str00 & vbCrLf & "description : " & objUser.Get("description")
str00 = str00 & vbCrLf & "desktopProfile : " & objUser.Get("desktopProfile")
str00 = str00 & vbCrLf & "destinationIndicator : " & objUser.Get("destinationIndicator")
str00 = str00 & vbCrLf & "directReports : " & objUser.Get("directReports")
str00 = str00 & vbCrLf & "displayName : " & objUser.Get("displayName") '表示名 (Display Name)
str00 = str00 & vbCrLf & "displayNamePrintable : " & objUser.Get("displayNamePrintable")
str00 = str00 & vbCrLf & "distinguishedName : " & objUser.Get("distinguishedName") '識別名 (Distinguished Name)
str00 = str00 & vbCrLf & "division : " & objUser.Get("division")
str00 = str00 & vbCrLf & "dSASignature : " & objUser.Get("dSASignature")
str00 = str00 & vbCrLf & "dSCorePropagationData : " & objUser.Get("dSCorePropagationData")
str00 = str00 & vbCrLf & "objectClass : " & objUser.Get("objectClass")
str00 = str00 & vbCrLf & "dynamicLDAPServer : " & objUser.Get("dynamicLDAPServer")
str00 = str00 & vbCrLf & "employeeID : " & objUser.Get("employeeID")
str00 = str00 & vbCrLf & "employeeNumber : " & objUser.Get("employeeNumber")
str00 = str00 & vbCrLf & "employeeType : " & objUser.Get("employeeType")
str00 = str00 & vbCrLf & "extensionName : " & objUser.Get("extensionName")
str00 = str00 & vbCrLf & "facsimileTelephoneNumber : " & objUser.Get("facsimileTelephoneNumber")
str00 = str00 & vbCrLf & "flags : " & objUser.Get("flags")
str00 = str00 & vbCrLf & "fromEntry : " & objUser.Get("fromEntry")
str00 = str00 & vbCrLf & "frsComputerReferenceBL : " & objUser.Get("frsComputerReferenceBL")
str00 = str00 & vbCrLf & "fRSMemberReferenceBL : " & objUser.Get("fRSMemberReferenceBL")
str00 = str00 & vbCrLf & "objectSid : " & objUser.Get("objectSid")
str00 = str00 & vbCrLf & "fSMORoleOwner : " & objUser.Get("fSMORoleOwner")
str00 = str00 & vbCrLf & "garbageCollPeriod : " & objUser.Get("garbageCollPeriod")
str00 = str00 & vbCrLf & "gecos : " & objUser.Get("gecos")
str00 = str00 & vbCrLf & "generationQualifier : " & objUser.Get("generationQualifier")
str00 = str00 & vbCrLf & "gidNumber : " & objUser.Get("gidNumber")
str00 = str00 & vbCrLf & "givenName : " & objUser.Get("givenName")
str00 = str00 & vbCrLf & "groupMembershipSAM : " & objUser.Get("groupMembershipSAM")
str00 = str00 & vbCrLf & "groupPriority : " & objUser.Get("groupPriority")
str00 = str00 & vbCrLf & "groupsToIgnore : " & objUser.Get("groupsToIgnore")
str00 = str00 & vbCrLf & "homeDirectory : " & objUser.Get("homeDirectory")
str00 = str00 & vbCrLf & "sAMAccountName : " & objUser.Get("sAMAccountName") 'ログオン名 (SAM Account Name)
str00 = str00 & vbCrLf & "homeDrive : " & objUser.Get("homeDrive")
str00 = str00 & vbCrLf & "homePhone : " & objUser.Get("homePhone")
str00 = str00 & vbCrLf & "homePostalAddress : " & objUser.Get("homePostalAddress")
str00 = str00 & vbCrLf & "houseIdentifier : " & objUser.Get("houseIdentifier")
str00 = str00 & vbCrLf & "info : " & objUser.Get("info")
str00 = str00 & vbCrLf & "initials : " & objUser.Get("initials")
str00 = str00 & vbCrLf & "internationalISDNNumber : " & objUser.Get("internationalISDNNumber")
str00 = str00 & vbCrLf & "ipPhone : " & objUser.Get("ipPhone")
str00 = str00 & vbCrLf & "isCriticalSystemObject : " & objUser.Get("isCriticalSystemObject")
str00 = str00 & vbCrLf & "isDeleted : " & objUser.Get("isDeleted")
str00 = str00 & vbCrLf & "accountExpires : " & objUser.Get("accountExpires")
str00 = str00 & vbCrLf & "isPrivilegeHolder : " & objUser.Get("isPrivilegeHolder")
str00 = str00 & vbCrLf & "jpegPhoto : " & objUser.Get("jpegPhoto")
str00 = str00 & vbCrLf & "l : " & objUser.Get("l")
str00 = str00 & vbCrLf & "labeledURI : " & objUser.Get("labeledURI")
str00 = str00 & vbCrLf & "lastKnownParent : " & objUser.Get("lastKnownParent")
str00 = str00 & vbCrLf & "lastLogoff : " & objUser.Get("lastLogoff")
str00 = str00 & vbCrLf & "lastLogon : " & objUser.Get("lastLogon")
str00 = str00 & vbCrLf & "lastLogonTimestamp : " & objUser.Get("lastLogonTimestamp")
str00 = str00 & vbCrLf & "legacyExchangeDN : " & objUser.Get("legacyExchangeDN")
str00 = str00 & vbCrLf & "lmPwdHistory : " & objUser.Get("lmPwdHistory")
str00 = str00 & vbCrLf & "accountNameHistory : " & objUser.Get("accountNameHistory")
str00 = str00 & vbCrLf & "localeID : " & objUser.Get("localeID")
str00 = str00 & vbCrLf & "lockoutTime : " & objUser.Get("lockoutTime")
str00 = str00 & vbCrLf & "loginShell : " & objUser.Get("loginShell")
str00 = str00 & vbCrLf & "logonCount : " & objUser.Get("logonCount")
str00 = str00 & vbCrLf & "logonHours : " & objUser.Get("logonHours")
str00 = str00 & vbCrLf & "logonWorkstation : " & objUser.Get("logonWorkstation")
str00 = str00 & vbCrLf & "mail : " & objUser.Get("mail")
str00 = str00 & vbCrLf & "managedObjects : " & objUser.Get("managedObjects")
str00 = str00 & vbCrLf & "manager : " & objUser.Get("manager")
str00 = str00 & vbCrLf & "masteredBy : " & objUser.Get("masteredBy")
On Error GoTo 0
MsgBox str00
End Function
|
029. UTF8 文字列の MD5 ハッシュ値
レジストリ [HKEY_CLASSES_ROOT\System.Security.Cryptography.MD5CryptoServiceProvider] を参照している
レジストリ [HKEY_CLASSES_ROOT\System.Text.UTF8Encoding] を参照している
.NET Framework が入っていれば使えるらしい(バージョンは??)
BASP21 や Base64.dll を使えばラクなんですけどね・・・
Set objMD5 = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
Set objUTF8 = CreateObject("System.Text.UTF8Encoding")
'// 文字列を UTF8 にエンコードし、バイト配列に変換
bytes = objUTF8.GetBytes_4("テスト")
'// ハッシュ値を計算(バイナリ)
hash = objMD5.ComputeHash_2((bytes))
'// バイナリを16進数文字列に変換
For i = 1 To LenB(hash)
a = a & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2)
Next
strText = LCase(a)
'// 結果を返す
WScript.Echo strText
|
030. UTF8 文字列の SHA1 ハッシュ値
Set objSHA1 = CreateObject("System.Security.Cryptography.SHA1Managed")
Set objUTF8 = CreateObject("System.Text.UTF8Encoding")
'// 文字列を UTF8 にエンコードし、バイト配列に変換
bytes = objUTF8.GetBytes_4("テスト")
'// ハッシュ値を計算(バイナリ)
hash = objSHA1.ComputeHash_2((bytes))
'// バイナリを16進数文字列に変換
For i = 1 To LenB(hash)
a = a & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2)
Next
strText = LCase(a)
'// 結果を返す
WScript.Echo strText
|
031. UTF8 文字列の SHA256 ハッシュ値
Set objSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed")
Set objUTF8 = CreateObject("System.Text.UTF8Encoding")
'// 文字列を UTF8 にエンコードし、バイト配列に変換
bytes = objUTF8.GetBytes_4("テスト")
'// ハッシュ値を計算(バイナリ)
hash = objSHA256.ComputeHash_2((bytes))
'// バイナリを16進数文字列に変換
For i = 1 To LenB(hash)
a = a & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2)
Next
strText = LCase(a)
'// 結果を返す
WScript.Echo strText
|
032. Shift_JIS 文字列の SHA1 ハッシュ値 & ファイルに書き込み
CAPICOM を使うには、マイクロソフトのサイトから "capicom.dll" をダウンロードし、
capicom.dll をパスの通ったフォルダ(C:\Windows\System32 など)に置き、
「ファイル名を指定して実行」から "regsvr32 capicom.dll" を実行する。
Set objSHA1 = CreateObject("System.Security.Cryptography.SHA1Managed")
Set objStrm = CreateObject("ADODB.Stream")
Set objUtil = CreateObject("CAPICOM.Utilities")
'// Shift_JIS 文字列をバイト配列に変換
objStrm.Open
objStrm.Type = 2 '2:Text
objStrm.Charset = "shift_jis" 'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
objStrm.WriteText "テスト"
' バイナリに変換
objStrm.Position = 0
objStrm.Type = 1 '1:Binary
' バイト配列に変換
bytes = objStrm.Read(objStrm.Size) '(objStrm.Size) は、なくてもいい
objStrm.Close
'// ハッシュ値を計算(バイナリ)
hash = objSHA1.ComputeHash_2((bytes))
'// バイナリを16進数文字列に変換
strText = LCase(objUtil.BinaryToHex(hash))
'// ファイルに書き込み(バイナリ)
objStrm.Open
objStrm.Type = 1 '1:Binary
objStrm.Write hash
objStrm.SaveToFile "SHA1Managed.txt", 2
objStrm.Close
'// 結果を返す(16進数文字列)
WScript.Echo strText
|
033. ファイルの SHA1 ハッシュ値
ファイルをドラッグ&ドロップすると SHA1 ハッシュ値を返す
100MB を超えるような大きいファイルは無理? メモリによる?
こんなことせず素直に fciv.exe
などを使えばよいのでは?
MD5, SHA256 にしたいときは objSHA1 の参照先を変更するだけ
→レジストリ [HKEY_CLASSES_ROOT\System.Security.Cryptography.~] を見よ
Set objSHA1 = CreateObject("System.Security.Cryptography.SHA1Managed")
Set objUtil = CreateObject("CAPICOM.Utilities")
Set fso = CreateObject("Scripting.FileSystemObject")
'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit
'// ファイルをバイト配列に変換
Set objStrm = CreateObject("ADODB.Stream")
objStrm.Open
objStrm.Type = 1 '1:Binary
objStrm.LoadFromFile(objArgs(0))
bytes = objStrm.Read
objStrm.Close
'// ハッシュ値を計算(バイナリ)
hash = objSHA1.ComputeHash_2((bytes))
'// バイナリを16進数文字列に変換
strText = LCase(objUtil.BinaryToHex(hash))
'// 結果を返す
WScript.Echo strText
|
034. Shift_JIS 文字列 → BASE64 エンコード
.NET Framework ToBase64Transform クラス
http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.tobase64transform.aspx
Set objBase64 = CreateObject("System.Security.Cryptography.ToBase64Transform")
Set objStrm = CreateObject("ADODB.Stream")
i_size = objBase64.InputBlockSize
o_size = objBase64.OutputBlockSize
'//---------------------------------------------------------------------------//
'// CanTransformMultipleBlocks = False の場合、1ブロックずつしかエンコードできない(たぶん)
'//---------------------------------------------------------------------------//
MsgBox "CanTransformMultipleBlocks = " & objBase64.CanTransformMultipleBlocks
'//---------------------------------------------------------------------------//
'// Shift_JIS 文字列をバイト配列に変換
'//---------------------------------------------------------------------------//
objStrm.Open
' Shift_JIS 文字列をインプット
objStrm.Type = 2 '2:Text
objStrm.Charset = "shift_jis" 'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
objStrm.WriteText "テスト"
' バイナリに変換
objStrm.Position = 0
objStrm.Type = 1 '1:Binary
' バイト配列に変換
bytes = objStrm.Read
objStrm.Close
'//---------------------------------------------------------------------------//
'// BASE64 エンコード
'//---------------------------------------------------------------------------//
objStrm.Open
objStrm.Type = 1 '1:Binary
' n_block = ブロック数
If LenB(bytes) Mod i_size = 0 Then n_block = LenB(bytes) / i_size Else n_block = LenB(bytes) \ i_size + 1
' 1ブロックごとに処理
For i = 0 To n_block - 1
' b_len = 1ブロックのバイト数(基本は i_size = 3 bytes、最後だけ短くなる)
If LenB(bytes) < (i + 1) * i_size Then b_len = LenB(bytes) - i * i_size Else b_len = i_size
' BASE64 エンコード(1ブロックずつ)
data = objBase64.TransformFinalBlock((bytes), i * i_size, b_len)
' オブジェクト(ADODB.Stream)にバイナリを書き込む
objStrm.Write data
Next
' ASCII 文字列に変換
objStrm.Position = 0
objStrm.Type = 2 '2:Text
objStrm.Charset = "ascii" 'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
strText = objStrm.ReadText
objStrm.Close
'//---------------------------------------------------------------------------//
'// 結果を返す
'//---------------------------------------------------------------------------//
WScript.Echo strText
|
▽その2 (2017.10.10 追記)
strText = "base64 エンコード・デコード"
WScript.Echo base64_encode(strText)
'//-------------------------------------------------------//
'// shift_jis -> base64 エンコード
'//-------------------------------------------------------//
Function base64_encode(strText)
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set objStrm = CreateObject("ADODB.Stream")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// shift_jis 読み込み
objStrm.Open
objStrm.Type = adTypeText
objStrm.Charset = "shift_jis"
objStrm.WriteText strText
objStrm.Position = 0
objStrm.Type = adTypeBinary
'// shift_jis -> base64
Set objElement = xmlDoc.CreateElement("dummy")
objElement.DataType = "bin.base64"
objElement.NodeTypedValue = objStrm.Read
strBase = objElement.Text
'// Return
base64_encode = strBase
End Function
|
035. Shift_JIS 文字列 ← BASE64 デコード
.NET Framework FromBase64Transform クラス
http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.frombase64transform.aspx
Set objBase64 = CreateObject("System.Security.Cryptography.FromBase64Transform")
Set objStrm = CreateObject("ADODB.Stream")
'//---------------------------------------------------------------------------//
'// ASCII 文字列をバイト配列に変換
'//---------------------------------------------------------------------------//
objStrm.Open
' ASCII 文字列をインプット
objStrm.Type = 2 '2:Text
objStrm.Charset = "ascii" 'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
objStrm.WriteText "g2WDWINn"
' バイナリに変換
objStrm.Position = 0
objStrm.Type = 1 '1:Binary
' バイト配列に変換
bytes = objStrm.Read
b_len = objStrm.Size
objStrm.Close
'//---------------------------------------------------------------------------//
'// BASE64 デコード
'//---------------------------------------------------------------------------//
objStrm.Open
' バイト配列をインプット
objStrm.Type = 1 '1:Binary
objStrm.Write objBase64.TransformFinalBlock((bytes), 0, b_len)
' Shift_JIS 文字列に変換
objStrm.Position = 0
objStrm.Type = 2 '2:Text
objStrm.Charset = "shift_jis" 'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
strText = objStrm.ReadText
objStrm.Close
'//---------------------------------------------------------------------------//
'// 結果を返す
'//---------------------------------------------------------------------------//
WScript.Echo strText
|
▽その2 (2017.10.10 追記)
strBase = "YmFzZTY0IINHg5ODUoFbg2iBRYNmg1KBW4No"
WScript.Echo base64_decode(strBase)
'//-------------------------------------------------------//
'// base64 -> shift_jis デコード
'//-------------------------------------------------------//
Function base64_decode(strBase)
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set objStrm = CreateObject("ADODB.Stream")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// base64 読み込み
Set objElement = xmlDoc.CreateElement("dummy")
objElement.DataType = "bin.base64"
objElement.Text = strBase
'// base64 -> shift_jis
objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Write objElement.NodeTypedValue
objStrm.Position = 0
objStrm.Type = adTypeText
objStrm.Charset = "shift_jis"
strText = objStrm.ReadText
'// Return
base64_decode = strText
End Function
|
036. [CAPICOM] Shift_JIS 文字列のハッシュ値
CAPICOM HashedData Object
http://msdn.microsoft.com/en-us/library/aa382440.aspx
CAPICOM Utilities Object
http://msdn.microsoft.com/en-us/library/aa388176.aspx
CAPICOM_HASH_ALGORITHM
http://msdn.microsoft.com/en-us/library/aa375694.aspx
'//---------------------------------------------//
'// CAPICOM_HASH_ALGORITHM
'//---------------------------------------------//
' 0 : SHA1
' 1 : MD2
' 2 : MD4
' 3 : MD5
' 4 : SHA-256
' 5 : SHA-384
' 6 : SHA-512
'//---------------------------------------------//
Set objHash = CreateObject("CAPICOM.HashedData")
Set objUtil = CreateObject("CAPICOM.Utilities")
Set objStrm = CreateObject("ADODB.Stream")
'// Shift_JIS 文字列をバイト配列に変換
objStrm.Open
' Shift_JIS 文字列をインプット
objStrm.Type = 2 '2:Text
objStrm.Charset = "shift_jis"
objStrm.WriteText "テスト"
' バイナリに変換
objStrm.Position = 0
objStrm.Type = 1 '1:Binary
' バイト配列に変換
bytes = objStrm.Read
objStrm.Close
'// バイト配列をバイナリ文字列に変換
bstr = objUtil.ByteArrayToBinaryString(bytes)
'// ハッシュ値
objHash.Algorithm = 0 '0:SHA1
objHash.Hash (bstr)
strText = LCase(objHash.Value)
'// 結果を返す
WScript.Echo strText
|
037. [CAPICOM] Shift_JIS 文字列の BASE64 デコード
Set objUtil = CreateObject("CAPICOM.Utilities")
'// BASE64 デコード
data = objUtil.Base64Decode("g2WDWINn")
'// 16進数文字列に変換
data = objUtil.BinaryToHex(data)
'// 16進数文字列を Shift_JIS 文字列に変換
For i = 1 To Len(data) / 2
strHEX = Mid(data, i * 2 - 1, 2)
intHEX = CInt("&H" & strHEX)
'// Shift_JIS 2バイト文字の処理
If (&H81 <= intHEX And intHEX <= &H9F) Or (&HE0 <= intHEX And intHEX <= &HFC) Then
strHEX = strHEX & Mid(data, i * 2 + 1, 2)
i = i + 1
End If
strText = strText & Chr("&H" & strHEX)
Next
'// 結果を返す
WScript.Echo strText
|
038. [CAPICOM] Shift_JIS 文字列の BASE64 デコード(その2)
Set objUtil = CreateObject("CAPICOM.Utilities")
Set objStrm = CreateObject("ADODB.Stream")
'//---------------------------------------------------------------------------//
'// BASE64 デコード
'//---------------------------------------------------------------------------//
data = objUtil.Base64Decode("g2WDWINn")
'//---------------------------------------------------------------------------//
'// 16進数文字列に変換
'//---------------------------------------------------------------------------//
data = objUtil.BinaryToHex(data)
'//---------------------------------------------------------------------------//
'// 16進数文字列を Shift_JIS 文字列に変換
'//---------------------------------------------------------------------------//
' 16進数文字列をインプット
objStrm.Open
objStrm.Type = 2 '2:Text
objStrm.Charset = "shift_jis"
For i = 1 To Len(data) / 2
strHEX = Mid(data, i * 2 - 1, 2)
intHEX = CInt("&H" & strHEX)
' Shift_JIS 2バイト文字の処理
If (&H81 <= intHEX And intHEX <= &H9F) Or (&HE0 <= intHEX And intHEX <= &HFC) Then
strHEX = strHEX & Mid(data, i * 2 + 1, 2)
i = i + 1
End If
objStrm.WriteText Chr("&H" & strHEX)
Next
' Shift_JIS 文字列に変換
objStrm.Position = 0
objStrm.Type = 2 '2:Text
objStrm.Charset = "shift_jis"
strText = objStrm.ReadText
objStrm.Close
'//---------------------------------------------------------------------------//
'// 結果を返す
'//---------------------------------------------------------------------------//
WScript.Echo strText
|
039. IEで開いているアドレスを取得
Internet Explorer でアドレスバーが隠されているサイトに対して、アドレス(URL)を取得する。
Set objShell = CreateObject("Shell.Application")
For Each objWindow In objShell.Windows
If TypeName(objWindow.Document) = "HTMLDocument" Then
x = MsgBox(objWindow.FullName & vbCrLf & objWindow.LocationURL, , objWindow.Document.Title)
End If
Next
|
040. ドメインユーザのパスワード有効期限
注)ドメインに参加しているときだけ使える。
Set objNT = CreateObject("WinNTSystemInfo")
'// http://msdn.microsoft.com/en-us/library/aa746345.aspx
' objNT.UserName
' objNT.ComputerName
' objNT.DomainName
' objNT.PDC
Set objAD = CreateObject("ADSystemInfo")
'// http://msdn.microsoft.com/en-us/library/aa705962.aspx
' objAD.UserName
' objAD.ComputerName
' objAD.SiteName
' objAD.DomainShortName
' objAD.DomainDNSName
' objAD.ForestDNSName
' objAD.PDCRoleOwner
' objAD.SchemaRoleOwner
' objAD.IsNativeMode
Set objUserNT = GetObject("WinNT://" & objNT.DomainName & "/" & objNT.UserName)
Set objUserAD = GetObject("LDAP://" & objAD.UserName)
MsgBox objAD.UserName & vbCrLf & vbCrLf _
& "アカウント有効期限:" & objUserAD.AccountExpirationDate & vbCrLf _
& "パスワード最終更新:" & objUserAD.PasswordLastChanged & vbCrLf _
& "パスワード有効期限:" & objUserNT.PasswordExpirationDate & vbCrLf _
& "パスワード有効期間:" & Fix(objUserNT.PasswordExpirationDate - objUserAD.PasswordLastChanged) & "日"
Set objUserNT = Nothing
Set objUserAD = Nothing
Set objNT = Nothing
Set objAD = Nothing
|
041. UTF-8 ファイル読み取り ⇒ Shift_JIS ファイル書き出し
'// Library ADODB
'// C:\Program Files\Common Files\System\ado\msado28.tlb
'// Microsoft ActiveX Data Objects 2.8 Library
'// Arguments : (0)Input File, (2)Output File
Set objArgs = WScript.Arguments
Set objStrm = WScript.CreateObject("ADODB.Stream")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// ADODB.SaveOptionsEnum
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
'// UTF-8 ファイル読み取り
objStrm.Open
objStrm.Type = adTypeText
objStrm.Charset = "UTF-8"
objStrm.LoadFromFile objArgs(0)
strText = objStrm.ReadText
objStrm.Close
'// Shift_JIS ファイル書き出し
objStrm.Open
objStrm.Position = 0
objStrm.Charset = "Shift_JIS"
objStrm.WriteText strText
objStrm.SaveToFile objArgs(1), adSaveCreateOverWrite
objStrm.Close
Set objStrm = Nothing
|
042. エクセルのシート名、インデックス、オブジェクト名
'// Arguments : (0)Excel File
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit
Set objExcel = CreateObject("Excel.Application")
'// Excel File を開く
Set objWorkbook = objExcel.Workbooks.Open(objArgs(0)): objWorkbook.Saved = True
MsgBox "Worksheets.Count = " & objWorkbook.Worksheets.Count, , objWorkbook.Name
For Each objWorksheet In objWorkbook.Worksheets
a = ""
a = a & vbCrLf & "シート名 = " & objWorksheet.Name
a = a & vbCrLf & "インデックス = " & objWorksheet.Index
a = a & vbCrLf & "オブジェクト名 = " & objWorksheet.CodeName 'VBScript では取れないことも
MsgBox a
Next
objWorkbook.Close
Set objExcel = Nothing
|
043. Jet, ACE データベースエンジンでエクセル読み書き
Microsoft Office をインストールしなくても Excel をデータベースとして扱うことで読み書きできる。
Web アプリなどサーバーサイドで実行する場合、マルチスレッドでエラーが出るようならシングルスレッドにする。
▽Microsoft Access 2010 を使用したデータ プログラミング
https://msdn.microsoft.com/ja-jp/library/office/ff965871(v=office.14).aspx
▽Microsoft Access 2010 Runtime
https://www.microsoft.com/ja-jp/download/details.aspx?id=10910
▽Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント
https://www.microsoft.com/ja-jp/download/details.aspx?id=13255
※使用制限あり
▽Microsoft.Jet.OLEDB.4.0
ODBCJT32.DLL / Microsoft Excel Driver (*.xls)
※Jet データベース エンジンはマルチスレッド非対応
▽Microsoft.ACE.OLEDB.12.0
ACEODBC.DLL / Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
▽データ ソース (ODBC)
-- 32bit OS / 32bit版
%windir%\system32\odbcad32.exe
-- 64bit OS / 32bit版
%windir%\SysWOW64\odbcad32.exe
Jetサンプル.xls, ACEサンプル.xlsx.zip (11KB)
▽Microsoft.Jet.OLEDB.4.0 / SELECT
Set fso = CreateObject("Scripting.FileSystemObject")
Set objADO = CreateObject("ADODB.Connection")
'// Excel File
excel_path = fso.GetParentFolderName(WScript.ScriptFullName) & "\Jetサンプル.xls"
'// ConnectionString
strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=""Excel 8.0;HDR=NO;""; Data Source=" & excel_path & ";"
'// 指定セルから読み取り
strSQL = "SELECT * FROM [Sheet1$A3:A3]"
'// Unrestricted connection timeout
objADO.CommandTimeout = 0
'// Connect to Database
objADO.Open strCon
'// Execute SQL
Set rs = objADO.Execute(strSQL)
'// Read from Excel File
If rs.EOF Then
x = MsgBox("該当データがありません。" & vbCrLf & vbCrLf & sql_file, 64, strTitle)
WScript.Quit
Else
Do Until rs.EOF
For i = 0 To rs.Fields.Count - 1
MsgBox rs.Fields(i).Name & vbCrLf & rs.Fields(i).Value
Next
rs.Movenext
Loop
End If
'// Disconnect from Database
objADO.Close
WScript.Quit
|
▽Microsoft.Jet.OLEDB.4.0 / UPDATE, INSERT
Set fso = CreateObject("Scripting.FileSystemObject")
Set objADO = CreateObject("ADODB.Connection")
'// Excel File
excel_path = fso.GetParentFolderName(WScript.ScriptFullName) & "\Jetサンプル.xls"
'// ConnectionString
strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=""Excel 8.0;HDR=NO;""; Data Source=" & excel_path & ";"
'// 指定セルへ書き込み
strSQL = "UPDATE [Sheet1$A3:A3] SET F1 = Now"
'// 行追加
'strSQL = "INSERT INTO [Sheet1$A0:A0] VALUES (Now)"
'// Unrestricted connection timeout
objADO.CommandTimeout = 0
'// Connect to Database
objADO.Open strCon
'// Execute SQL
Set rs = objADO.Execute(strSQL)
'// ADO properties
a = "-- ADO properties --"
a = a & vbCrLf & "ConnectionString : " & objADO.ConnectionString
a = a & vbCrLf & "Attributes : " & objADO.Attributes
a = a & vbCrLf & "CommandTimeout : " & objADO.CommandTimeout
a = a & vbCrLf & "ConnectionTimeout : " & objADO.ConnectionTimeout
a = a & vbCrLf & "CursorLocation : " & objADO.CursorLocation
a = a & vbCrLf & "DefaultDatabase : " & objADO.DefaultDatabase
a = a & vbCrLf & "IsolationLevel : " & objADO.IsolationLevel
a = a & vbCrLf & "Mode : " & objADO.Mode
a = a & vbCrLf & "Provider : " & objADO.Provider
a = a & vbCrLf & "State : " & objADO.State
a = a & vbCrLf & "Version : " & objADO.Version
MsgBox a
'// Disconnect from Database
objADO.Close
WScript.Quit
|
▽Microsoft.ACE.OLEDB.12.0 / SELECT
Set fso = CreateObject("Scripting.FileSystemObject")
Set objADO = CreateObject("ADODB.Connection")
'// Excel File
excel_path = fso.GetParentFolderName(WScript.ScriptFullName) & "\ACEサンプル.xlsx"
'// ConnectionString
strCon = "Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties=""Excel 12.0 Xml;HDR=NO;""; Data Source=" & excel_path & ";"
'// 指定セルから読み取り
strSQL = "SELECT * FROM [Sheet1$A3:A3]"
'// Unrestricted connection timeout
objADO.CommandTimeout = 0
'// Connect to Database
objADO.Open strCon
'// Execute SQL
Set rs = objADO.Execute(strSQL)
'// Read from Excel File
If rs.EOF Then
x = MsgBox("該当データがありません。" & vbCrLf & vbCrLf & sql_file, 64, strTitle)
WScript.Quit
Else
Do Until rs.EOF
For i = 0 To rs.Fields.Count - 1
MsgBox rs.Fields(i).Name & vbCrLf & rs.Fields(i).Value
Next
rs.Movenext
Loop
End If
'// Disconnect from Database
objADO.Close
WScript.Quit
|
▽Microsoft.ACE.OLEDB.12.0 / UPDATE, INSERT
Set fso = CreateObject("Scripting.FileSystemObject")
Set objADO = CreateObject("ADODB.Connection")
'// Excel File
excel_path = fso.GetParentFolderName(WScript.ScriptFullName) & "\ACEサンプル.xlsx"
'// ConnectionString
strCon = "Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties=""Excel 12.0 Xml;HDR=NO;""; Data Source=" & excel_path & ";"
'// 指定セルへ書き込み
strSQL = "UPDATE [Sheet1$A3:A3] SET F1 = Now"
'// 行追加
'strSQL = "INSERT INTO [Sheet1$A:C] VALUES (""123"", Now, ""さかた"")"
'// WHERE 指定
'strSQL = "UPDATE [Sheet1$] SET F3 = ""やまもと"" WHERE F1 = ""123"""
'// Unrestricted connection timeout
objADO.CommandTimeout = 0
'// Connect to Database
objADO.Open strCon
'// Execute SQL
Set rs = objADO.Execute(strSQL)
'// ADO properties
a = "-- ADO properties --"
a = a & vbCrLf & "ConnectionString : " & objADO.ConnectionString
a = a & vbCrLf & "Attributes : " & objADO.Attributes
a = a & vbCrLf & "CommandTimeout : " & objADO.CommandTimeout
a = a & vbCrLf & "ConnectionTimeout : " & objADO.ConnectionTimeout
a = a & vbCrLf & "CursorLocation : " & objADO.CursorLocation
a = a & vbCrLf & "DefaultDatabase : " & objADO.DefaultDatabase
a = a & vbCrLf & "IsolationLevel : " & objADO.IsolationLevel
a = a & vbCrLf & "Mode : " & objADO.Mode
a = a & vbCrLf & "Provider : " & objADO.Provider
a = a & vbCrLf & "State : " & objADO.State
a = a & vbCrLf & "Version : " & objADO.Version
MsgBox a
'// Disconnect from Database
objADO.Close
WScript.Quit
|
044. Shift_JIS 文字列 → HEX(16進数)エンコード
▽その1
strText = "hex(16進数)エンコード・デコード"
WScript.Echo hex_encode(strText)
'//-------------------------------------------------------//
'// shift_jis -> hex エンコード
'//-------------------------------------------------------//
Function hex_encode(strText)
'// shift_jis -> hex
For i = 1 To Len(strText)
aaa = Hex(Asc(Mid(strText, i, 1)))
If Len(aaa) Mod 2 = 1 Then aaa = "0" & aaa
strHEX = strHEX & aaa
Next
'// Return
hex_encode = strHEX
End Function
|
▽その2
strText = "hex(16進数)エンコード・デコード"
WScript.Echo hex_encode(strText)
'//-------------------------------------------------------//
'// shift_jis -> hex エンコード
'//-------------------------------------------------------//
Function hex_encode(strText)
Set objStrm = CreateObject("ADODB.Stream")
Set objUtil = CreateObject("CAPICOM.Utilities")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// shift_jis -> binary
objStrm.Open
objStrm.Type = adTypeText
objStrm.Charset = "shift_jis"
objStrm.WriteText strText
objStrm.Position = 0
objStrm.Type = adTypeBinary
binary = objStrm.Read
'// binary -> hex
strHEX = objUtil.BinaryToHex(binary)
'// Return
hex_encode = strHEX
End Function
|
▽その3
strText = "hex(16進数)エンコード・デコード"
WScript.Echo hex_encode(strText)
'//-------------------------------------------------------//
'// shift_jis -> hex エンコード
'//-------------------------------------------------------//
Function hex_encode(strText)
Set objStrm = CreateObject("ADODB.Stream")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// shift_jis -> binary
objStrm.Open
objStrm.Type = adTypeText
objStrm.Charset = "shift_jis"
objStrm.WriteText strText
objStrm.Position = 0
objStrm.Type = adTypeBinary
binary = objStrm.Read
'// binary -> hex
For i = 1 To LenB(binary)
strHEX = strHEX & Right("0" & Hex(AscB(MidB(binary, i, 1))), 2)
Next
'// Return
hex_encode = strHEX
End Function
|
045. Shift_JIS 文字列 ← HEX(16進数)デコード
▽その1
strHEX = "6865788169313690699094816A834783938352815B8368814583668352815B8368"
WScript.Echo hex_decode(strHEX)
'//-------------------------------------------------------//
'// hex -> shift_jis デコード
'//-------------------------------------------------------//
Function hex_decode(strHEX)
'// hex -> shift_jis
For i = 1 To Len(strHEX) / 2
aaa = Mid(strHEX, i * 2 - 1, 2)
'// 2バイト文字
If Left(aaa, 1) = "8" Or Left(aaa, 1) = "9" Or Left(aaa, 1) = "E" Or Left(aaa, 1) = "F" Then
aaa = Mid(strHEX, i * 2 - 1, 4)
i = i + 1
End If
strText = strText & Chr("&H" & aaa)
Next
'// Return
hex_decode = strText
End Function
|
▽その2
strHEX = "6865788169313690699094816A834783938352815B8368814583668352815B8368"
WScript.Echo hex_decode(strHEX)
'//-------------------------------------------------------//
'// hex -> shift_jis デコード
'//-------------------------------------------------------//
Function hex_decode(strHEX)
Set objStrm = CreateObject("ADODB.Stream")
Set objUtil = CreateObject("CAPICOM.Utilities")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// hex -> shift_jis
objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Write objUtil.BinaryStringToByteArray(objUtil.HexToBinary(strHEX))
objStrm.Position = 0
objStrm.Type = adTypeText
objStrm.Charset = "shift_jis"
strText = objStrm.ReadText
'// Return
hex_decode = strText
End Function
|
046. バイナリ → BASE64 エンコード
JPG などのファイルをドラッグ&ドロップ
72桁で改行されたテキストファイルが作成される
'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit
Set fso = CreateObject("Scripting.FileSystemObject")
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set objStrm = CreateObject("ADODB.Stream")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// binary ファイル読み込み
objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Position = 0
objStrm.LoadFromFile objArgs(0)
Set objElement = xmlDoc.CreateElement("dummy")
objElement.DataType = "bin.base64"
objElement.NodeTypedValue = objStrm.Read
'// text ファイル書き出し
Set objFile = fso.CreateTextFile(objArgs(0) & "≪base64エンコード≫.txt", True)
objFile.Write objElement.Text
Set objElement = Nothing
Set xmlDoc = Nothing
Set objFile = Nothing
Set objStrm = Nothing
MsgBox "おわりました"
WScript.Quit
|
047. バイナリ ← BASE64 デコード
BASE64 でエンコードされたテキストファイルをドラッグ&ドロップ
'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit
Set fso = CreateObject("Scripting.FileSystemObject")
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set objStrm = CreateObject("ADODB.Stream")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// ADODB.SaveOptionsEnum
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
'// text ファイル読み込み
Set objFile = fso.OpenTextFile(objArgs(0), 1, False)
'// binary ファイル書き出し
Set objElement = xmlDoc.CreateElement("dummy")
objElement.DataType = "bin.base64"
objElement.Text = objFile.ReadAll
objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Position = 0
objStrm.Write objElement.NodeTypedValue
objStrm.SaveToFile objArgs(0) & "≪base64デコード≫", adSaveCreateOverWrite
Set objElement = Nothing
Set xmlDoc = Nothing
Set objFile = Nothing
Set objStrm = Nothing
MsgBox "おわりました"
WScript.Quit
|
048. バイナリ → HEX(16進数)エンコード
JPG などのファイルをドラッグ&ドロップ
改行なしのテキストファイルが作成される
'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit
Set fso = CreateObject("Scripting.FileSystemObject")
Set objStrm = CreateObject("ADODB.Stream")
Set objUtil = CreateObject("CAPICOM.Utilities")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// binary ファイル読み込み
objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Position = 0
objStrm.LoadFromFile objArgs(0)
'// text ファイル書き出し
Set objFile = fso.CreateTextFile(objArgs(0) & "≪hexエンコード≫.txt", True)
objFile.Write objUtil.BinaryToHex(objStrm.Read)
Set objFile = Nothing
Set objStrm = Nothing
MsgBox "おわりました"
WScript.Quit
|
049. バイナリ ← HEX(16進数)デコード
HEX(16進数)でエンコードされたテキストファイルをドラッグ&ドロップ
'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit
Set fso = CreateObject("Scripting.FileSystemObject")
Set objStrm = CreateObject("ADODB.Stream")
Set objUtil = CreateObject("CAPICOM.Utilities")
'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2
'// ADODB.SaveOptionsEnum
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
'// text ファイル読み込み
Set objFile = fso.OpenTextFile(objArgs(0), 1, False)
'// binary ファイル書き出し
objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Position = 0
objStrm.Write objUtil.BinaryStringToByteArray(objUtil.HexToBinary(objFile.ReadAll))
objStrm.SaveToFile objArgs(0) & "≪hexデコード≫", adSaveCreateOverWrite
Set objFile = Nothing
Set objStrm = Nothing
MsgBox "おわりました"
WScript.Quit
|
050. 暗号・複合
Rijndael(ラインダール)を使用する際、暗号文とIV(初期化ベクター)の2つを相手先に渡し、
Key(共有キー)は外部に漏れないようお互い保持。もしくは SHA256(SessionID+暗号ソルト) のようにルールに則って作成できるようにする。
初期ベクターは基本的にランダム設定。
ここでは Key に SHA256 を利用した。共有キーのビット数を SHA256 と同じ 256bit としたため。
名前空間: System.Security.Cryptography
アセンブリ: mscorlib (mscorlib.dll 内)
C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb
C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb
など
▽System.Security.Cryptography 名前空間
https://msdn.microsoft.com/ja-jp/library/system.security.cryptography(v=vs.110).aspx
'//------------------------------------------------------------//
'// mscorlib.CipherMode
Const CipherMode_CBC = 1
Const CipherMode_ECB = 2
Const CipherMode_OFB = 3
Const CipherMode_CFB = 4
Const CipherMode_CTS = 5
'// Public
Public iv, key
'//------------------------------------------------------------//
key = sha256("≪秘密≫共有キー:256bit/バイト配列:32バイト/16進数:64バイト")
plain_txt = "暗号化し、平文に戻します。"
encrypted = encrypt(plain_txt, key)
decrypted = decrypt(encrypted, iv, key)
MsgBox "【平文】" & plain_txt & vbCrLf _
& "【暗号】" & encrypted & vbCrLf _
& "【IV:128bit】" & iv & vbCrLf _
& "【Key:256bit】" & key & vbCrLf _
& "【復号】" & decrypted
WScript.Quit
'//-------------------------------------------------------//
'// 暗号
'//-------------------------------------------------------//
Function encrypt(txt, key)
Set objRijndael = CreateObject("System.Security.Cryptography.RijndaelManaged")
Set objUTF8 = CreateObject("System.Text.UTF8Encoding")
bytes = objUTF8.GetBytes_4(txt)
objRijndael.Mode = CipherMode_CBC
objRijndael.BlockSize = 128
objRijndael.KeySize = 256
objRijndael.IV '初期ベクター:ランダムに設定
objRijndael.Key = hex2bytes(key)
encrypt = bytes2hex(objRijndael.CreateEncryptor.TransformFinalBlock((bytes), 0, LenB(bytes)))
iv = bytes2hex(objRijndael.IV)
Set objUTF8 = Nothing
Set objRijndael = Nothing
End Function
'//-------------------------------------------------------//
'// 復号
'//-------------------------------------------------------//
Function decrypt(xhex, iv, key)
Set objRijndael = CreateObject("System.Security.Cryptography.RijndaelManaged")
Set objUTF8 = CreateObject("System.Text.UTF8Encoding")
bytes = hex2bytes(xhex)
objRijndael.Mode = CipherMode_CBC
objRijndael.BlockSize = 128
objRijndael.KeySize = 256
objRijndael.IV = hex2bytes(iv)
objRijndael.Key = hex2bytes(key)
decrypt = objUTF8.GetString((objRijndael.CreateDecryptor.TransformFinalBlock((bytes), 0, LenB(bytes))))
Set objUTF8 = Nothing
Set objRijndael = Nothing
End Function
'//-------------------------------------------------------//
'// bytes -> hex 変換(バイト配列→16進数)
'//-------------------------------------------------------//
Function bytes2hex(xbytes)
With CreateObject("Microsoft.XMLDOM").CreateElement("dummy")
.DataType = "bin.hex"
.NodeTypedValue = xbytes
bytes2hex = .Text
End With
End Function
'//-------------------------------------------------------//
'// hex -> bytes 変換(16進数→バイト配列)
'//-------------------------------------------------------//
Function hex2bytes(xhex)
With CreateObject("Microsoft.XMLDOM").CreateElement("dummy")
.DataType = "bin.hex"
.Text = xhex
hex2bytes = .NodeTypedValue
End With
End Function
'//-------------------------------------------------------//
'// SHA256
'//-------------------------------------------------------//
Function sha256(txt)
Set objSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed")
Set objUTF8 = CreateObject("System.Text.UTF8Encoding")
'// 文字列を UTF8 にエンコードし、バイト配列に変換
bytes = objUTF8.GetBytes_4(txt)
'// ハッシュ値を計算(バイナリ)
hash = objSHA256.ComputeHash_2((bytes))
'// バイト配列を16進数文字列に変換
sha256 = bytes2hex(hash)
End Function
|
