SQLの窓

2017年09月20日


64ビット PC の VBScript で 32ビット ODBC ドライバの一覧を取得する

最初の『管理者として cscript 実行を強制する』は、cscript での実行を強制するついでに実装しています。(なんらかの制限環境でも動くようにとの考慮です。)

目的は、レジストリのキーの一覧ですが、キーの一覧は知る限り、WMI でしか取得できないので、GetObject("Winmgmts:root\default:StdRegProv") でレジストリ処理用のオブジェクトを取得して使用。

一覧表示は、cscript で実行を強制しているので単純に wscript.echo で出力。コマンドプロンプトを新たに作成して実行するので、結果の表示を止めるために、Wscript.StdIn.ReadLine です。
' 管理者として cscript 実行を強制する
Set obj = Wscript.CreateObject("Shell.Application")
if Wscript.Arguments.Count = 0 then
	obj.ShellExecute "cscript.exe", WScript.ScriptFullName & " runas", "", "runas", 1
	Wscript.Quit
end if

const WMI_HKEY_LOCAL_MACHINE = &H80000002

Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")

strBasePath = "SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI"

Call objRegistry.EnumKey( WMI_HKEY_LOCAL_MACHINE, strBasePath, aKeys )

For Each strKeyPath in aKeys
	Wscript.Echo strKeyPath
Next

Wscript.StdIn.ReadLine

実際は少し変なのが混じっていますが、ODBC 接続のドライバ文字列が欲しい場合を想定しているので、その場合はそれは排除して見れるはすです。



※ コマンドプロンプトのプロパティで、簡易編集モードを ON にして、範囲をドラッグして右クリックでコピーできます。

※ コマンドプロンプトならば、『reg query HKLM\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI』ですから、リダイレクトしてファイルに表示結果を書き込めばいいでしょう
reg query HKLM\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI > list.txt
posted by lightbox at 2017-09-20 20:28 | VBS + WMI | このブログの読者になる | 更新情報をチェックする

2016年12月24日


VBScript + WMI : ファイルの状態の監視

WMI の典型的なイベント監視のサンプルです。
( リンク先は、Microsoft の TechNet のスクリプト センターです )

ファイル作成の監視
1) C:\scripts フォルダを作成します。
2) 適当な場所にスクリプトを作成します(file_create.vbs)
3) そのフォルダをエクスプローラでSHIFTキーを押しながら右クリックしてコマンドブロンプトを開きます
4) cscript file_create.vbs と実行します
5) C:\scripts でファイルを作成します
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & _  
        strComputer & "\root\cimv2")  
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _  
    ("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " _  
        & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _  
            & "TargetInstance.GroupComponent= " _  
                & "'Win32_Directory.Name=""c:\\\\scripts""'")  
Do  
    Set objLatestEvent = colMonitoredEvents.NextEvent  
    Wscript.Echo objLatestEvent.TargetInstance.PartComponent  
Loop  

ファイル変更の監視
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & _  
        strComputer & "\root\cimv2")  
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _  
    ("SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE " _  
        & "TargetInstance ISA 'CIM_DataFile' and " _  
            & "TargetInstance.Name='c:\\scripts\\index.vbs'")  
Do  
    Set objLatestEvent = colMonitoredEvents.NextEvent  
    Wscript.Echo "File: " & objLatestEvent.TargetInstance.Name  
    Wscript.Echo "New size: " & objLatestEvent.TargetInstance.FileSize  
    Wscript.Echo "Old size: " & objLatestEvent.PreviousInstance.FileSize  
Loop  
ファイル削除の監視
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & _  
        strComputer & "\root\cimv2")  
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _  
    ("SELECT * FROM __InstanceDeletionEvent WITHIN 10 WHERE " _  
        & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _  
            & "TargetInstance.GroupComponent= " _  
                & "'Win32_Directory.Name=""c:\\\\scripts""'")  
Do  
    Set objLatestEvent = colMonitoredEvents.NextEvent  
    Wscript.Echo objLatestEvent.TargetInstance.PartComponent  
Loop  
利用できるディスク領域の監視
Const LOCAL_HARD_DISK = 3  
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
Set colMonitoredDisks = objWMIService.ExecNotificationQuery _  
    ("Select * from __instancemodificationevent within 30 where " _  
        & "TargetInstance isa 'Win32_LogicalDisk'")  

Do 
    Set objDiskChange = colMonitoredDisks.NextEvent  
    If objDiskChange.TargetInstance.DriveType = LOCAL_HARD_DISK Then  
        If objDiskChange.TargetInstance.Size < 100000000 Then  
            Wscript.Echo "Hard disk space is below 100000000 bytes."  
        End If  
    End If  
Loop  



posted by lightbox at 2016-12-24 14:34 | VBS + WMI | このブログの読者になる | 更新情報をチェックする

2016年03月08日


VBScript : WMI を使用してレジストリ情報より、shell: を使ってフォルダを開くコマンドラインの一覧を作成する

VBScript のコードは以下のようになります。一覧のテキストを作成したい場合は、コマンドプロンプトで cscript の引数として以下のコードを保存した .vbs ファイルを実行して、結果をパイプで sort に渡して最後にテキストファイルにリダイレクトします

cscript.exe //nologo test.vbs | sort > mylist.txt
Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")

strBasePath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions"

ret = objRegistry.EnumKey( &H80000002, strBasePath, aKeys )

For Each strKeyPath in aKeys
	ret = objRegistry.GetStringValue( &H80000002, strBasePath & "\" & strKeyPath, "Name", strValue )
	Wscript.Echo "Explorer /e,shell:" & strValue
Next



▼ 結果の一覧です
Explorer /e,shell:AddNewProgramsFolder
Explorer /e,shell:Administrative Tools
Explorer /e,shell:AppData
Explorer /e,shell:AppUpdatesFolder
Explorer /e,shell:Cache
Explorer /e,shell:CD Burning
Explorer /e,shell:ChangeRemoveProgramsFolder
Explorer /e,shell:Common Administrative Tools
Explorer /e,shell:Common AppData
Explorer /e,shell:Common Desktop
Explorer /e,shell:Common Documents
Explorer /e,shell:Common Programs
Explorer /e,shell:Common Start Menu
Explorer /e,shell:Common Startup
Explorer /e,shell:Common Templates
Explorer /e,shell:CommonDownloads
Explorer /e,shell:CommonMusic
Explorer /e,shell:CommonPictures
Explorer /e,shell:CommonRingtones
Explorer /e,shell:CommonVideo
Explorer /e,shell:ConflictFolder
Explorer /e,shell:ConnectionsFolder
Explorer /e,shell:Contacts
Explorer /e,shell:ControlPanelFolder
Explorer /e,shell:Cookies
Explorer /e,shell:CredentialManager
Explorer /e,shell:CryptoKeys
Explorer /e,shell:CSCFolder
Explorer /e,shell:Default Gadgets
Explorer /e,shell:Desktop
Explorer /e,shell:Device Metadata Store
Explorer /e,shell:DocumentsLibrary
Explorer /e,shell:Downloads
Explorer /e,shell:DpapiKeys
Explorer /e,shell:Favorites
Explorer /e,shell:Fonts
Explorer /e,shell:Gadgets
Explorer /e,shell:Games
Explorer /e,shell:GameTasks
Explorer /e,shell:History
Explorer /e,shell:HomeGroupFolder
Explorer /e,shell:ImplicitAppShortcuts
Explorer /e,shell:InternetFolder
Explorer /e,shell:Libraries
Explorer /e,shell:Links
Explorer /e,shell:Local AppData
Explorer /e,shell:LocalAppDataLow
Explorer /e,shell:LocalizedResourcesDir
Explorer /e,shell:MAPIFolder
Explorer /e,shell:MusicLibrary
Explorer /e,shell:My Music
Explorer /e,shell:My Pictures
Explorer /e,shell:My Video
Explorer /e,shell:MyComputerFolder
Explorer /e,shell:NetHood
Explorer /e,shell:NetworkPlacesFolder
Explorer /e,shell:OEM Links
Explorer /e,shell:Original Images
Explorer /e,shell:Personal
Explorer /e,shell:PhotoAlbums
Explorer /e,shell:PicturesLibrary
Explorer /e,shell:Playlists
Explorer /e,shell:PrintersFolder
Explorer /e,shell:PrintHood
Explorer /e,shell:Profile
Explorer /e,shell:ProgramFiles
Explorer /e,shell:ProgramFilesCommon
Explorer /e,shell:ProgramFilesCommonX86
Explorer /e,shell:ProgramFilesX86
Explorer /e,shell:Programs
Explorer /e,shell:Public
Explorer /e,shell:PublicGameTasks
Explorer /e,shell:PublicLibraries
Explorer /e,shell:Quick Launch
Explorer /e,shell:Recent
Explorer /e,shell:RecordedTVLibrary
Explorer /e,shell:RecycleBinFolder
Explorer /e,shell:ResourceDir
Explorer /e,shell:Ringtones
Explorer /e,shell:SampleMusic
Explorer /e,shell:SamplePictures
Explorer /e,shell:SamplePlaylists
Explorer /e,shell:SampleVideos
Explorer /e,shell:SavedGames
Explorer /e,shell:Searches
Explorer /e,shell:SearchHomeFolder
Explorer /e,shell:SendTo
Explorer /e,shell:Start Menu
Explorer /e,shell:Startup
Explorer /e,shell:SyncCenterFolder
Explorer /e,shell:SyncResultsFolder
Explorer /e,shell:SyncSetupFolder
Explorer /e,shell:System
Explorer /e,shell:SystemCertificates
Explorer /e,shell:SystemX86
Explorer /e,shell:Templates
Explorer /e,shell:User Pinned
Explorer /e,shell:UserProfiles
Explorer /e,shell:UserProgramFiles
Explorer /e,shell:UserProgramFilesCommon
Explorer /e,shell:UsersFilesFolder
Explorer /e,shell:UsersLibrariesFolder
Explorer /e,shell:VideosLibrary
Explorer /e,shell:Virtual Machines
Explorer /e,shell:Windows

※ これらは、ショートカットとして保存できます


posted by lightbox at 2016-03-08 17:03 | VBS + WMI | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり