--.--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2009.12.27

第355夜

vbs(wsh)のお勉強3日目・・・。

無理(/ω\)
ぼすけてw
この記事へのトラックバックURL
http://hexagram.blog41.fc2.com/tb.php/377-d8d39054
この記事へのトラックバック
この記事へのコメント
Q.WMIの初期処理(?)が2通りあるんだけど?

A.2通りのやり方があるだけっぽい。
ちなみに下記は引数が省略されていると思うので、色々引数を調べる必要がある。

a.
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}")

b.
Set objLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objService = objLocator.ConnectServer

ConnectServerの引数について
第一引数:コンピュータ名
第二引数:ネームスペース(rootcimv2など)
第三引数:ユーザ名
第四引数:パスワード

省略した場合はデフォルト値になると思われる。
おそらくローカルコンピュータに現在のユーザ名とパスワードで接続なのかな。
ネームスペースは不明だけどrootcimv2なのかな~。
Posted by hexagram at 2009.12.27 01:48 | 編集
Q.リモートWSHを使う方法は?

A.未調査。

下記は未確認。

「管理者がリモート WSH を有効にするには、Windows 2000 リソース キットを
入手するか、ttp://msdn.microsoft.com/scripting にアクセスして WSH の設定値が記述されて
いる windowsscript.adm ファイルを入手する必要があります。」とマイクロソフトのサイトに説明があるが、windowsscript.admはどうも存在しないらしい(この説明はうそかYO)。

対応するレジストリキーを直接編集してやる必要があるらしい。
リモートコンピュータのHKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows Script HostSettingsキーの
Remoteを0から1にすると、実行が許可されるらしい。
Posted by hexagram at 2009.12.27 12:37 | 編集
Q.wmi関連のツールは?

A.実際に使ってないので自分でもまだよく分からないけど、こんなのがあるらしい。
当面はvbseditを中心に使って、足りないようなら他のを試してみる感じかな。

正直、まだそんなレベルじゃないから、まだまだ先の話になりそう。

WMIのクラスを調べる
WMI Object Browser(WMITools.exe)
※インストールしたけどまだ使ったことがない。

WMIの自動生成
WMICodeCreator(WMICodeCreator.zip)
※インストールしたけどまだ使ったことがない。

ソースで使用しているWMIの情報を表示?
vbsedit(vbsedit.exe)
Posted by hexagram at 2009.12.27 14:10 | 編集
Q.エクスプローラの右クリックメニューを利用するには?

A.2つの方法があるらしい。

1.レジストリの値を利用する。

下記のように行うようだが(txtにnotepad.exeが関連づけられている前提)、私の環境では下記の理由により実行不可。

ファイルが見つからないというエラーが出る。
秀丸がProgram Filesにインストールされているので、半角スペースが悪さしている模様です。

その場合、"で囲めばよいのだが、今回はちょっと特殊でうまくいかない模様です。

最終的に「WSHShell.Run "C:Program FilesHidemaruHidemaru.exe C:developmentvbsprojectpracticetest.txt", 1, True」として実行されるはず。

秀丸のパスの半角スペースを対応しようと「WSHShell.Run """C:Program FilesHidemaruHidemaru.exe C:developmentvbsprojectpracticetest.txt""", 1, True」としてもエラーになる。

予想だが、パスの半角スペースと開きたいファイルを区別している半角スペースの区別ができていないのではないか(ひとつの実行ファイルとして扱われている)?

「WSHShell.Run """C:Program FilesHidemaruHidemaru.exe""", 1, True」のようにファイルを指定しなければ秀丸が開くのでそう的を外してはいないと思う。

例)
Option Explicit

Dim WSHShell, Fs, ext, extkey, extdata, extcommand
Dim strFileName
Dim strActionName

Set WSHShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
strFileName = "C:developmentvbsprojectpracticetest.txt"
strActionName = "open"

If Fs.FileExists(strFileName) = True Then
ext = Fs.GetExtensionName(strFileName)
extkey = "HKCR." & ext & ""
extdata = WSHShell.RegRead (extkey)
ElseIf Fs.FolderExists(strFileName) = True Then
extdata = "Folder"
End If

extcommand = WSHShell.RegRead("HKCR" & extdata & "Shell" & strActionName & "command")
extcommand = Replace(extcommand, "%1", strFileName)
WSHShell.Run extcommand, 1, True

2.Shellオブジェクトを利用する。

例)
Option Explicit

Dim objFso
Dim objFile
Dim Win

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFile = objFso.Getfile("C:developmentvbsprojectpracticetest.txt")
Set Win = WScript.CreateObject("Shell.Application")

'ショートカット(ここでは"E"は"&"を前に不可する必要がある)
Dim folderName
Dim fileName

folderName = objFile.ParentFolder
fileName = objFile.Name

'直接objFile.ParentFolderやobjFile.Nameを設定してもなぜかうまくいかない。
'Win.NameSpace(objFile.ParentFolder).ParseName(objFile.Name).InvokeVerb "編集(&E)"
Win.NameSpace(folderName).ParseName(fileName).InvokeVerb "編集(&E)"
Posted by hexagram at 2009.12.27 16:07 | 編集
Q.例をコピーしてもエラーが出る場合

A.ちょっと趣旨が異なりますが、\は\を2個書かないとweb上では消されるようなので(他の特殊記号も怪しい)、気づかずにアップ時に消えている文字があるかもしれません。

あとは環境の違いとかもあると思います。
基本的に自分用メモなので・・・。
Posted by hexagram at 2009.12.27 17:21 | 編集
Q.フォルダを作成したい場合(上位フォルダが存在しない場合は全て作成)

A.下記を参照。

ttp://www.whitire.com/vbs/tips0083.html
Posted by hexagram at 2009.12.27 20:03 | 編集
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。