これを読めばASPを使ってレジストリを変更できるようになります
有名なWSHをご存知ですか? Windows Script Host の略称であり、その機能は非常に強力であり、シンプルな構文で学習と使用が簡単で、強力な機能を備えた JScript および VBScript スクリプト言語も使用されます。この記事で紹介したレジストリの変更に加えて、Excel ファイルへのアクセスやネットワークとの通信も可能です。もちろん、その最大の利点はオペレーティング システムと通信できることです。レジストリを変更するだけです。オペレーティング システムと通信する方法は氷山の一角です。この多くの利点と実用性により、多くの Windows ユーザーに支持されています。この記事では、WSH の優雅さを理解できるように紹介します。
VBScript で記述された WSH プログラム ファイルの拡張子は .vbs です。スクリプト プログラムは、ウィンドウ インターフェイスでは wscript.exe ファイルによって、キャラクタ インターフェイスでは cscript.exe ファイルによって解釈および実行されます。コマンド形式は次のとおりです。 .vbs
オブジェクトを作成し、VBScript を使用してレジストリを変更するには、まずオペレーティング システムと通信できるオブジェクトを作成し、次にそのオブジェクトのさまざまなメソッドを使用してレジストリを操作する必要があります。このオブジェクトの作成方法と形式は次のとおりです。 :
ディム操作レジストリ
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
上記のコードは、オペレーティング システムと通信できるオブジェクト OperationRegistry を作成します。
オブジェクトのメソッド 上記のオブジェクトがあるからといって、すぐにレジストリを操作できるわけではありません。レジストリを操作するには、このオブジェクトのいくつかの重要なメソッドも理解する必要があります。
1. レジストリを読み取るための RegRead 操作
2. RegWrite レジストリへの書き込み操作
3. レジストリの RegDelete 削除操作
さらに、WSH には 2 つの一般的なメソッドもあります。
WScript.Echo() は、テキスト情報の文字列を表示するために使用されます。これは、VB の MsgBox() に相当します。
Wscript.Quit() は、VBScript プログラムを終了するために使用されます。
メソッドのパラメータには、上記の 3 つの操作 RegRead、RegWrite、および RegDelete のパラメータが必要ですが、これらの操作のパラメータの数と形式は異なります。以下では、それらの共通かつ重要なパラメータの 1 つについて説明します。
このパラメータは「パスパラメータ」とも呼ばれ、ルートキー、主キーのパス、キー値の各部分の表現方法は次のとおりです。
ルートキー:
ルートキーを表す方法は 2 つあります。
方法 1: 次のように、レジストリ内の文字列を直接使用してそれを表します。
HKEY_CLASSES_ROOT、HKEY_CURRENT_USER など。 方法 2: 省略形の 4 文字を使用して表します。最初の 2 文字は HK で、最後の 2 文字はルート キーワードの最初の文字です。のように:
ルート キー HKEY_CLASSES_ROOT は HKCR として表現され、ルート キー HKEY_CURRENT_USER は HKCU などとして表現できます。
主キーのパス:
主キー パスは、レジストリ内のターゲット キーの主キーの場所であり、各主キーは「」文字で区切られます。例: 「ソフトウェアMicrosoftWindowsCurrentVersionPolicies」
キー値:
キーと値のパラメーターは主キーのパスを直接たどります。たとえば、完全なパスは次のようになります。
"HKCRソフトウェアMicrosoftWindowsCurrentVersionPoliciesNoRun"
詳しい方法の説明
1. RegRead 操作の詳細な解釈 RegRead 操作は主に、レジストリ内の主キーのデフォルト値またはキー値データを読み取るために使用され、読み取ったデータを対応する変数に送信し、MsgBox() 関数を使用します。 VB では、データを表示することで、レジストリ内のデータを読み取るという目的が達成されます (オブジェクト OperationRegistry のメソッド Popup() を使用して、読み取ったデータを画面に送信することもできます)。
'read.vbs (次のコードを read.vbs ファイルとして保存します)
ディム操作レジストリ
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
ディム Read_Data1、Read_Data2
Read_Data1=OperationRegistry.RegRead("HKCR.xxf")
'ルートキー HKEY_CLASSES_ROOT の下の .xxf 主キーのデフォルト値を読み取り、データを変数 Read_Data1 に送信します
Read_Data2=OperationRegistry.RegRead("HKCR.xxfvalue")
' .xxf 主キーの下の値キーのデータを読み取り、そのデータを変数 Read_Data2 に送信します
MsgBox("デフォルト="&Read_Data1&" 値="&Read_Data2)
'読み込んだデータを表示
2. RegWrite 操作の詳細説明 RegWrite の書き込み操作は、主にレジストリに新しい主キーまたはキー値を作成し、それらに初期値を与えるために使用されます。この操作は、既存の主キーまたはキー値のデータを変更することもできます。そのため、書き込み操作のパラメーター構造は、パス パラメーターだけでなく、初期値と型パラメーターも必要になります。
まず初期値パラメータを見てみましょう。このパラメータは書き込み操作に必須です。空 (null) にすることもできますが、省略することはできません。新しい主キーを作成する場合、初期値パラメータは主キーのデフォルト値に割り当てられます。初期値パラメータは、新しいキー値の初期データになります。 type パラメータによって決定されます。主に次の 3 つのタイプがあります。
(1)REG_SZ: 文字タイプはデフォルトのタイプです。
(2)REG_DWORD:全角型。
(3)REG_BINARY: バイナリ型。
上記の 3 つのタイプのうち、1 番目と 2 番目のタイプは、状況によっては 2 番目のタイプに置き換えることができます。
REG_SZ 型の場合:「テキスト」や「文字列」などの文字列で直接代入します。 REG_DWORD 型と REG_BINARY 型の場合は 2 つの代入方法があります。
i) 0、1 などの 10 進数で直接表現します。
ii) 0x12、0xff などの 16 進数で表されます。例を参照してください。
'write.vbs
ディム操作レジストリ
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
デフォルト=OperationRegistry.RegRead("HKCR")
'null値を取得(null)
OperationRegistry.RegWrite "HKCR.xxf"、デフォルト
'ルートキー HKEY_CLASSES_ROOT の下に新しい主キー .xxf を作成し、そのデフォルト値を空に設定します
OperationRegistry.RegWrite "HKCR.xxf","xxffile"
'ルートキー HKEY_CLASSES_ROOT の下に新しい主キー .xxf を作成し、そのデフォルト値を「xxffile」に設定します
OperationRegistry.RegWrite "HKCR.xxfvalue1","string"
'主キー.xxf の下に新しい文字列キー値 value1 を作成し、その初期値を "string" に設定します
OperationRegistry.RegWrite "HKCR.xxfvalue2",1,"REG_DWORD"
'primary key.xxf の下に新しい REG_DWORD キー値 value2 を作成し、その初期値を 1 に設定します
OperationRegistry.RegWrite "HKCR.xxfvalue3",0Xff,"REG_BINARY"
'主キー .xxf の下に新しいバイナリ キー値 value3 を作成し、その初期値を 16 進数の ff に設定します
3. RegDelete 操作の詳細説明 RegDelete 操作は、主にレジストリに既に存在する主キーまたはキー値を削除するために使用されます。この操作は、主キーまたはキー値を容赦なく削除する可能性があります。キーの下にあるデータがどれほど重要であっても、レジストリの「切り取り」は妨げられずに機能するため、この操作を使用する場合は注意してください。
削除操作のパラメーター形式は、読み取り操作のパラメーター形式とほぼ同じですが、1 つの小さな違いがあります。つまり、削除操作では操作の戻り値を特定の変数に送信する必要がありません。次に例を示します。
'.vbs を削除
ディム操作レジストリ
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
OperationRegistry.RegRead("HKCR.xxfvalue")
' .xxf 主キーの下の値キー値を削除します
OperationRegistry.RegRead("HKCR.xxf")
ルート キー HKEY_CLASSES_ROOT の下にある .xxf 主キーを削除します。レジストリに既に存在する主キーやキー値を変更しないこと、ましてや不適切な書き込みや削除は行わないことを強調することが重要です。レジストリは深刻です。システムがクラッシュする可能性があります。どうしてもこれを実行したい場合は、レジストリのバックアップを作成してください。
応用例
1.本機の「コンピュータ名」を読み取ってください。
'ReadComputerName.vbs
ディム読み取りコンピューター名
Set ReadComputerName=WScript.CreateObject("WScript.Shell")
薄暗いコンピュータ名、RegPath
RegPath="HKLMSystemCurrentControlSetControlComputerNameComputerNameComputerName"
ComputerName=ReadComputerName.RegRead(RegPath)
MsgBox("コンピュータ名"&コンピュータ名)
2. ショートカットアイコンの小さな矢印を非表示にします
'Hidden.vbs
薄暗い隠し矢印アイコン
Set HiddenArrowIcon=WScript.CreateObject("WScript.Shell")
ディム RegPath1、RegPath2
RegPath1="HKCRlnkfileIsShortCut"
RegPath2="HKCRpiffileIsShortCut"
HiddenArrowIcon.RegDelete(RegPath1)
HiddenArrowIcon.RegDelete(RegPath2)
3.「スタート」メニューを変形する
'ChangeStartMenu.vbs
DimChangeStartMenu
Set ChangeStartMenu=WScript.CreateObject("WScript.Shell")
RegPath="HKCRSoftwareMicrosoftWindowsCurrentVersionPolicies"
Type_Name="REG_DWORD"
キーデータ=1
StartMenu_Run="NoRun"
StartMenu_Find="検索なし"
StartMenu_Close="いいえ閉じる"
SubChange(引数)
ChangeStartMenu.RegWrite RegPath&Argument,Key_Data,Type_Name
MsgBox("成功しました!")
エンドサブ
Call Change(StartMenu_Run) '「スタート」メニューの「ファイル名を指定して実行」機能を無効にします
Call Change(StartMenu_Find) '「スタート」メニューの「検索」機能を無効にします
Call Change(StartMenu_Close) '「スタート」メニューの「システムのシャットダウン」機能を無効にします
4. 自動起動プログラムを Windows に追加します。このプログラムは、コンピューターの電源が入ったときに自動的に実行されます。
'AddAutoRunProgram.vbs
'プログラムが c:myfile フォルダーにあり、ファイル名が autorun.exe であると仮定します。
薄暗い自動実行プログラム
Set AutoRunProgram=WScript.CreateObject("WScript.Shell")
RegPath="HKLMSoftwareMicrosoftWindowsCurrentVersionRun"
Type_Name="REG_SZ"
Key_Name="自動実行"
Key_Data="C:Myfileautorun.exe"
' 自己起動プログラムのフルパスファイル名
AutoRunProgram.Write RegPath&Key_Name,Key_Data,Type_Name
' 自動起動プログラム autorun.exe をスタートアップ グループに追加します
MsgBox("成功しました!")