ドラッグされたマネージドDLLをRegAsmで登録するスクリプト | 初心者備忘録
消えると困るのでコピペ
これは32bitのマネージドDLLを登録するスクリプトです。
64bitの場合は
FrameworkFolderPath = WindowsFolderPath & "Microsoft.NET\Framework64\"
とする必要があります。
'*********************************************************
' ドラッグされたマネージドDLLをRegAsmで登録するスクリプト
'
' 2011/04/05 kinuasa
'*********************************************************
Option Explicit
Dim Args
Dim FSO
Dim f
Dim DllFilePath
Dim WindowsFolderPath
Dim FrameworkFolderPath
Dim SubFrameworkFolderPath
Dim RegAsmFilePath
Dim ArgStr
Const Opt = " /tlb /codebase" 'RegAsmに渡すオプション
Const MsgTitle = "RegAsm実行"
RegAsmFilePath = "" '初期化
Set Args = WScript.Arguments
If Args.Count < 1 Then
MsgBox "DLLを当スクリプトファイルにドラッグ&ドロップして処理を実行してください。", 16, MsgTitle
WScript.Quit
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
Select Case LCase(FSO.GetExtensionName(Args(0)))
Case "dll"
DllFilePath = Args(0)
Case Else
MsgBox "DLLを当スクリプトファイルにドラッグ&ドロップして処理を実行してください。", 16, MsgTitle
WScript.Quit
End Select
Set Args = Nothing
'.NET Frameworkフォルダのパス取得
WindowsFolderPath = FSO.GetSpecialFolder(0).Path
If Right(WindowsFolderPath, 1) <> "\" Then WindowsFolderPath = WindowsFolderPath & "\"
FrameworkFolderPath = WindowsFolderPath & "Microsoft.NET\Framework\"
If FSO.FolderExists(FrameworkFolderPath) <> True Then
MsgBox ".NET Frameworkフォルダが見つかりませんでした。" & vbCrLf & _
"処理を中止します。", 16, MsgTitle
WScript.Quit
End If
'RegAsm.exeのパス取得
With CreateObject("ADODB.Recordset")
.Fields.Append "Path", 200, 255
.Open
For Each f In FSO.GetFolder(FrameworkFolderPath).SubFolders
.AddNew
.Fields("Path").Value = f.Path
.Update
Next
.Sort = "Path DESC" 'Framework各バージョンフォルダ名を降順ソート
.MoveFirst
Do Until .EOF
SubFrameworkFolderPath = .Fields(0)
If Right(SubFrameworkFolderPath, 1) <> "\" Then SubFrameworkFolderPath = SubFrameworkFolderPath & "\"
If FSO.FileExists(SubFrameworkFolderPath & "RegAsm.exe") Then
If MsgBox("[" & SubFrameworkFolderPath & "RegAsm.exe]で登録しますか?", vbYesNo, MsgTitle) = vbYes Then
RegAsmFilePath = SubFrameworkFolderPath & "RegAsm.exe"
Exit Do
End If
End If
.MoveNext
Loop
.Close
End With
Set FSO = Nothing
If Len(RegAsmFilePath) < 1 Then
MsgBox "[RegAsm.exe]が見つかりませんでした。" & vbCrLf & _
"処理を中止します。", 16, MsgTitle
WScript.Quit
End If
ArgStr = """" & DllFilePath & """" & Opt
CreateObject("Shell.Application").ShellExecute RegAsmFilePath, ArgStr, "", "runas" 'runas付きで実行'*************************************************************
' ドラッグされたマネージドDLLをRegAsmで登録解除するスクリプト
'
' 2011/04/05 kinuasa
'*************************************************************
Option Explicit
Dim Args
Dim FSO
Dim f
Dim DllFilePath
Dim WindowsFolderPath
Dim FrameworkFolderPath
Dim SubFrameworkFolderPath
Dim RegAsmFilePath
Dim ArgStr
Const Opt = " /tlb /u" 'RegAsmに渡すオプション
Const MsgTitle = "RegAsm実行"
RegAsmFilePath = "" '初期化
Set Args = WScript.Arguments
If Args.Count < 1 Then
MsgBox "DLLを当スクリプトファイルにドラッグ&ドロップして処理を実行してください。", 16, MsgTitle
WScript.Quit
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
Select Case LCase(FSO.GetExtensionName(Args(0)))
Case "dll"
DllFilePath = Args(0)
Case Else
MsgBox "DLLを当スクリプトファイルにドラッグ&ドロップして処理を実行してください。", 16, MsgTitle
WScript.Quit
End Select
Set Args = Nothing
'.NET Frameworkフォルダのパス取得
WindowsFolderPath = FSO.GetSpecialFolder(0).Path
If Right(WindowsFolderPath, 1) <> "\" Then WindowsFolderPath = WindowsFolderPath & "\"
FrameworkFolderPath = WindowsFolderPath & "Microsoft.NET\Framework\"
If FSO.FolderExists(FrameworkFolderPath) <> True Then
MsgBox ".NET Frameworkフォルダが見つかりませんでした。" & vbCrLf & _
"処理を中止します。", 16, MsgTitle
WScript.Quit
End If
'RegAsm.exeのパス取得
With CreateObject("ADODB.Recordset")
.Fields.Append "Path", 200, 255
.Open
For Each f In FSO.GetFolder(FrameworkFolderPath).SubFolders
.AddNew
.Fields("Path").Value = f.Path
.Update
Next
.Sort = "Path DESC" 'Framework各バージョンフォルダ名を降順ソート
.MoveFirst
Do Until .EOF
SubFrameworkFolderPath = .Fields(0)
If Right(SubFrameworkFolderPath, 1) <> "\" Then SubFrameworkFolderPath = SubFrameworkFolderPath & "\"
If FSO.FileExists(SubFrameworkFolderPath & "RegAsm.exe") Then
If MsgBox("[" & SubFrameworkFolderPath & "RegAsm.exe]で登録解除しますか?", vbYesNo, MsgTitle) = vbYes Then
RegAsmFilePath = SubFrameworkFolderPath & "RegAsm.exe"
Exit Do
End If
End If
.MoveNext
Loop
.Close
End With
Set FSO = Nothing
If Len(RegAsmFilePath) < 1 Then
MsgBox "[RegAsm.exe]が見つかりませんでした。" & vbCrLf & _
"処理を中止します。", 16, MsgTitle
WScript.Quit
End If
ArgStr = """" & DllFilePath & """" & Opt
CreateObject("Shell.Application").ShellExecute RegAsmFilePath, ArgStr, "", "runas" 'runas付きで実行