タグ:レジストリ ( 8 ) タグの人気記事
(バッチ)レジストリの値を取得し変数に格納
バッチファイルで、レジストリの値を取得して変数に入れるための方法です。
レジストリからの値の取得は reg query コマンドで出来るようです。/v の後に、キーの名前を指定します。

例えばFlashPlayerのバージョンを取得するには以下のようにします。

C:\>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX" /v "Version"

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX
Version REG_SZ 11.0.1.152


これを変数に入れるためには、実行結果を行ごとにループで回し、求めたい値の名前(結果行の空白で区切った1番目(%%A)。今回はVersion)が出てきたら、その3番目(%%C。%%Aから3つ目)を GET_VALUE 変数に入れるという処理の流れにすればいいようです。
@echo off
 
FOR /F "TOKENS=1,2,*" %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX" /v "Version"') DO IF "%%A"=="Version" SET GET_VALUE=%%C
 
echo Flashバージョン
echo %GET_VALUE%
 
pause



参考:
レジストリの値をコマンド プロンプトで取得する こちらのコードをほぼそのまま使わせてもらいました。
@IT:コマンド・プロンプトでレジストリを操作する
コマンドプロンプトを使ってみよう! -バッチファイル-
[PR]
by Jehoshaphat | 2013-03-22 22:21 | VBScirpt,WSH,バッチ | Trackback | Comments(0)
グループポリシーが使えないPCでプロキシの設定変更を禁止する
企業向けエディションでないWindowsを使っている場合、グループポリシーが使えません。
そのような場合で、IEのプロキシの設定変更を禁止するレジストリキーをメモしておきます。


・ユーザ個別でIEのプロキシの設定を書き換えできないようにグループポリシーで設定。
HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel
・すべてのユーザーでIEのプロキシ設定変更を禁止
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Internet Explorer\Control Panel

上記のキーにDWORD値で「Proxy」を作成し「1」に設定。(0にした瞬間設定変更有効となる)

[PR]
by Jehoshaphat | 2013-01-04 01:24 | 豆知識 | Trackback | Comments(0)
グループポリシーで任意のレジストリの値を書き換えたい

グループポリシーの管理テンプレートが用意されていていない細かな設定等は、レジストリの値を直接書き換えてやる必要があります。
グループポリシーでその設定を展開するには、コンピュータの構成のスタートアップスクリプトや、ユーザのログオンスクリプトで、regファイルをインポートさせれば良いわけです。

バッチファイルとregファイルをポリシーの既定のフォルダか共有フォルダに置きます。
バッチの内容は以下のようにして、batファイルをスタートアップスクリプト、ログオンスクリプトに指定します。

set _REGFILE=hogehoge.reg
regedit /s %~dp0%_REGFILE%


参考:
win:使用法ヒント:
[PR]
by Jehoshaphat | 2012-12-08 00:55 | 豆知識 | Trackback | Comments(0)
WindowsPCから取り外したHDDを使ってIPアドレスを知る方法
とあるWindowsPCが壊れてしまい起動できなくなりました。
で、このPCには静的IPを振っていたんですが、それを壊れたPCのHDDから取得することを試してみました。

外部レジストリファイルの読み込み
幸いにも壊れたPCのHDDは生きていたので、別のWindowsPCにUSBで接続し、アクセスしました。
IPはレジストリファイルに記録されているので、この別WindowsPCからレジストリ情報にアクセスしてみます。


まず、レジストリファイルですが、以下の場所にあります。(E:はUSB接続したHDDとします)

HKEY_LOCAL_MACHINE\SAM → E:\WINDOWS\system32\config\Sam
HKEY_LOCAL_MACHINE\Security → E:\WINDOWS\system32\config\SECURITY
HKEY_LOCAL_MACHINE\Software → E:\WINDOWS\system32\config\software
HKEY_LOCAL_MACHINE\System → E:\WINDOWS\system32\config\system
HKEY_LOCAL_MACHINE\Security → E:\WINDOWS\system32\config\SECURITY
HKEY_LOCAL_MACHINE\Security → E:\WINDOWS\system32\config\SECURITY
HKEY_LOCAL_MACHINE\Security → E:\WINDOWS\system32\config\SECURITY
HKEY_CURRENT_USER → E:\Documents and Settings\ユーザ名\NTUSER.DAT
HKEY_CURRENT_CONFIG → E:\WINDOWS\system32\config\system
HKEY_USERS\.DEFAULT → E:\WINDOWS\system32\config\Default

regedit.exe を立ち上げ、任意のキーを選択し(今回はHKEY_LOCAL_MACHINE)、[ファイル]→[ハイブの読み込み]から、E:\WINDOWS\system32\config\system を選択します。
この時、キー名を聞いてくるので、適当な名前にします。(例:system_old)
これで、system_old というキーが追加されます。

IPの設定を確認
IPの設定は HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\[GUID] 内にあるようなので、確認します。(IPAddress,SubnetMask,DefaultGateway,NameServerあたりを確認しておけばよいでしょう)

ハイブのアンロード
確認が終わったら、追加したハイブ system_old キーを選択し、[ファイル]→[ハイブのアンロード]で後処理をしてやります。


参考:
Windows 別のHDDからレジストリ情報を抜き出す。
Technet:レジストリ構造
[PR]
by Jehoshaphat | 2012-11-05 19:08 | 豆知識 | Trackback | Comments(0)
レジストリのHKLM\SECURITYとHKLM\SAMを覗く方法
事の発端は、今年のはじめに Windows7 Home Premium Edition のPCを買った知人から、このPCを複数人で使わせたいがセキュリティ確保のためにパスワードの桁数ポリシーをつけたいということでした。


Professional Edition 以上ならローカルセキュリティポリシーのパスワードのポリシーでパスワードの長さについて設定することができますが、 Home Premium Edition はローカルセキュリティポリシーがないので、GUIで設定することができません。

しかし、GUIツールが無いだけでどうせレジストリに設定データ持たせているだけだろうということで、レジストリの分析が始まったわけです。


まず、レジストリのどこにパスワードポリシーの設定があるか分からなかったので、パスワードポリシーの設定変更前と後のレジストリをregeditでエクスポートしてWinMergeで差分を見てみることにしました。

しかし、どうもパスワードポリシーの設定っぽいキーが見当たりません。

で、調べるうちに、regeditでは普通に見れない下記のレジストリハイブがあることがわかりました。

HKEY_LOCAL_MACHINE\SAM
HKEY_LOCAL_MACHINE\Security

どうやらこの中にパスワードポリシーがあるっぽいのですが、regedit では上記ハイブ以下はみれません。
LocalSystemアカウント(NT AUTHORITY\Systemユーザ)でないとみれないようです。(LocalSystemアカウントについては、サービスで使用される「System」「Local Service」「Network Service」アカウントとは? - @ITを参照)
つまり、LocalSystemアカウントでレジストリエディタ(regedit)を起動すれば良いわけです。

そのために、PsExec.exe を使ってレジストリエディタを起動します。
PsExec.exe については、(ツール)リモートコンピュータ(Windows)のコマンドやプログラムを実行するPsExecを参照。
コマンドプロンプトで下記のように入力します。
(WindowsVista以降ならコマンドプロンプトを管理者権限で起動しないとアクセス拒否になります)

psexec.exe -s -i regedit


これで、HKLM\SECURITYとHKLM\SAM配下が見れるようになりました。
この状態で、ポリシー設定前と後の状態をエクスポートと、差分を取ります。

パスワードの桁数を6文字から5文字に変更した場合ですが、下記のようになっていました。(変更点が赤色。他のデータは00でダミー化)

"F"=hex:00,00,00,00,00,00,00,00,00,00,0000,00,00,00,00,59,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
03,00,00,00,00,00,00,05,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\

どうやら、この赤色部分がパスワードの桁数ポリシーに関係する設定っぽいです。
しかし、SECURITY配下って基本的にバイナリで格納されている場合がおおく、どこからどこまでがパスワードポリシーの設定なのかわかりませんでした。
ハックサイトとかを調査すればより分かるんでしょうが、今回は時間がないということで、ここで諦めました。
結局、運用ルールをしっかり守って使ってもらうようにしてくれとしました。

ちなみに、HKLM\SAM配下はSAM(Security Account Manager)データベースと呼ばれており、ここにWindowsログインパスワードのハッシュも格納されているようです。
特にXP以前のOSはデフォルトで、セキュリティが弱いLMハッシュがはいっており、短いパスワードなら比較的簡単にクラックできるようですね。
Windowsパスワード解析ツールOphcrackを試してみたではツールを使って、SAMデータベース内のLMハッシュからパスワードを解析するツールについて書いています。

備考:
この記事執筆中に見つけたんですが、あいむの珍妄想ページ ~ののキューブ ~レジストリのカスタマイズ@IT:Windows TIPS -- Tips:レジストリへのアクセスをモニタする方法では、フリーソフトRegmonを使ってレジストリ変更点や参照を追跡できることが書いてありました。これを使えばもっと簡単にレジストリの場所を特定できたかもしれません。



参考:
セキュリティおよびレジストリ - パート1
ソニーが音楽CDに組み込んだ“Rootkit”とは何者か? - @IT
NewSID v4.10:
上級ユーザー向けの Windows レジストリ情報:
[PR]
by jehoshaphat | 2011-05-12 14:48 | 豆知識 | Trackback | Comments(0)
Just-In-Time デバッガが鬱陶しいので無効にした

PC起動時に毎回といっていいほど、Just-In-Time デバッガが出てきます。デバッガしないを選択してもまた出てきます。
どうやら、DELLのサポートツールのVBScriptがエラーが吐いてるっぽいんですが。。
ほんとはなんでエラーが出てるのか調べる必要があると思うんですが、時間もないんでデバッガを無効にすることにしました。

下記のレジストリ値を削除すればいいようです。


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger


.Net Frameworkの方にも消すべきレジストリ値があるようですが、自分の環境の場合は有りませんでした。
が、参考までに、下記の値があれば消す必要があるようです。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger


参考:
てすとぶろぐ: JITデバッガの無効化
JIT デバッガのレジストリ - Lunatic Sol
[PR]
by jehoshaphat | 2010-05-26 21:51 | 豆知識 | Trackback | Comments(1)
レジストリにてプロキシの有効無効の調査
Windowsドメインに参加しているあるPCがグループポリシーで設定してるにも関わらずネットアクセス時にプロキシが通ってないようなので、調査してみました。
本来はそのPCにリモートデスクトップで入り、インターネットオプションから「接続」タブの「LANの設定」からみればいいんですが、「接続」タブを非表示にするようにグループポリシーで設定しているので見れません。


ということで、レジストリをリモートから参照することとしました。
他のPCのレジストリを参照する方法についてはWindowsドメイン環境で他のPCのレジストリを操作するを参照。。


下記のレジストリパスにプロキシの設定が入っているようです。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable
値が 0 が無効、1が有効だそうですね。
詳細はWindows:IEのプロキシ設定はどこにある?が参考になります。

ところで、リモートでレジストリを参照すると、ルート直下にある HKEY_CURRENT_USER が見当たりません。
見えるのは HKEY_LOCAL_MACHINE , HKEY_USERS のみです。

調べてみると、HKEY_CURRENT_USER は現在ログインしているユーザを表すようです。
その実体は HKEY_USERS 配下にあるようですね。
HKEY_USERS 配下の S-1-5-18 ~ S-1-5-20 まではシステムが作成する特殊な固定SIDだそうです。
S-1-5-21-xxx っていうのが実際のクライアントユーザのレジストリをあらすようです。
この辺の詳細は、レジストリキーHKEY_USERSとは?を参照。

つまり、リモートレジストリだとパスが、
HKEY_USERS\S-1-5-21-9999999999-9999999999-9999999999-9999\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable
となるようですね。


余談ですが、SIDはSID と名前の変換 ~ SID ルックアップ・ツールを使うとユーザ名に変換できるようです。ただし、そのユーザが登録されているActiveDirectoryが参照できる必要がありますが。。。
(ドメインユーザの場合。ローカルユーザの場合はそのローカルPC上でやる必要がある)
[PR]
by jehoshaphat | 2010-02-13 13:22 | 豆知識 | Trackback | Comments(0)
Windowsドメイン環境で他のPCのレジストリを操作する
他のPCのレジストリをリモートで操作する方法です。

%systemroot%\regedit.exe

をコンテキストメニューで「別のユーザとして実行」します。
または、ショートカットを作りプロパティから「別の資格情報で実行する」にチェックします。

これでドメイン管理者権限で実行し、レジストリエディタのファイルメニューから「ネットワークレジストリへの接続」を押下します。

後は対象となるクライアントPCを選択してやるだけですね。
[PR]
by jehoshaphat | 2010-02-13 13:21 | 豆知識 | Trackback | Comments(0)