- ベストアンサー
linuxからwindowsのレジストリ値の取得方法
こんにちわ。 linux上からwindowsのレジストリ値の取得に苦戦しています・・・。 やろうとしていることは 「linuxでwindows領域をマウントし、レジストリの値を取得する」 です。 「/WINDOWS/system32/config」フォルダの中にあるレジストリ情報から値を取得したいと考えています。 linux上で「regedit」を動かすことができれば解決できるのですが、そのようなツールは発見できませんでした。 linuxにmonoを入れて.NETを動かせる環境を作ってみたのですが、RegistryKeyクラスを使用できないようなのであきらめました。 いくつかアプローチの方法は考えられると思いますが、とりあえずlinux上からレジストリの値を見ることができればそれでOKです。値を変更したりはしません。 linuxはubuntu9.04を使用しています。 どなたか方法のわかるかたがいらっしゃいましたら、ご解答お願いします。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
要するに、専用のツールがあるかないか?の話なら無い。 そういうことだと思います。 で、やるとしたら、単にバイナリーエディターで書き換えるこれ最強。 ただ、最強のWindowsハッカーじゃないと Windowsのレジストリーをバイナリーエディターで書き換えるとか無理。 regeditでさえ、ifconfig eth0 mtu 1500相当の操作をするためにも 安全性を保証しない旨、警告が出されるくらいだし… たとえば、レジストリーに整合性チェックの仕組みがあれば それをエミュレートする必要まである。 ただ、単に参照して、それをLinux上の何かに反映させるというなら レジストリーの構造を理解すればなんとかなるのかもね。 スクリプト言語でバイナリーファイルを操作する方法もあったと思うし。 問題のほとんどはWindows特有のレジストリーの構造の問題で どちらかというとWindowsに詳しい人の多いところで聞くべきじゃないかな。
その他の回答 (4)
No.2の追記です。 > デュアルブートのような環境で あいまいなので解釈に困りますが、いったいどんな環境でしょうか。 ただ単に、起動しなくなったWindowsOSをインストールしたHDDを装着した環境、ということでしょうか。 > 完全ローカルな状態です。 スタンドアロンPCということでしょうか。 ----- まさか、とは思いますが、 「レジストリが原因でWindowsが起動できなくなった。 レジストリを操作してWindowsを起動できるように回復したい。」 ということではないでしょうね。 もしも「まさか」のケースならば、 ・Web上で事例がすぐに見つかります。 ・No.3さんが指摘しているWinPEやWinREやインストール媒体のコマンドでの修復を試してはどうですか。 ・Windowsのスレッドに投稿するのがベターです。 ・せめて、WindowsOSのVersion程度は明確にして投稿してください。
補足
お返事ありがとうございます。 特に何か復旧しようという目的ではないです。windowsは元気に動いてます。 今行っているのは研究の一環です。 スタンドアロンPCという意味です。 windowsのversionはXP home edition SP3です。 linux上からwindowsで起動時に自動実行されるファイルのパスを参照したいと思っています。 レジストリの「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」 の値を入手できれば問題は解決します。 説明不足で申し訳ありませんでした。 ご指摘のようにwindowsのスレッドに投稿してみます。
- katouka09
- ベストアンサー率50% (130/256)
なぜ、そのような操作をLinuxで行いたいのでしょうか? 理由を書けば、いろんな案が出ると思います。 WinPEなどCDから起動できるWindows環境を構築しておき、 CDブートしてHDD内のレジストリを操作したほうが簡単なように 思えるのですが・・・。 WinPEとは http://www.atmarkit.co.jp/fwin2k/operation/winpe2/winpe2_02.html
補足
お返事ありがとうございます。 一言で言うと研究の一環です。 winodwsの起動時に実行されるファイルのパスをlinux上から知りたいと思っています。 詳しく言うとレジストリの 「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」 に書かれているパスを参照できれば問題は解決します。 あと、レジストリを参照するためだけのwindowsを用意することはできないです。 普通に使用しているwindowsのHDD領域を研究対象にしています。 説明不足で申し訳ありませんでした。
質問は「レジストリ値の取得」とありますが、 目的がLinuxからWindowsのレジストリを操作することならば、直接アクセスしてレジストリ操作すれば簡単に実現できます。 例えば、私の例ですがfedora12 -> Win7のレジストリを操作しています。 http://ftlabo.hp.infoseek.co.jp/temp/f12shot.jpg fedora標準のTygerVNCを使用しています。(結局はtelnet接続ですが) 上記サイトの画像は近日中に削除します。
補足
すいません、こちらの説明不足がありました。 telnetで通信は行えない環境です。 デュアルブートのような環境でlinuxを起動して、windows領域をマウントしています。 なので、完全ローカルな状態です。 通信を行って値を取得する以外の方法を探しています。 解答していただいたのに申し訳ありません。 よろしくお願いします。
- notnot
- ベストアンサー率47% (4900/10359)
どんな方法でもいいと言うことであれば、Windows上でtelnetサービスを動かして、LinuxからtelnetでログインしてWindowsのregコマンドを実行すれば出来ます。 デフォルトがNTLM認証だったかもしれないので、あらかじめWindows上で、tlntadmn コマンドを実行して、「認証機構」の部分に、Passwd と表示されなければ、tlntadmn config sec = +passwd で、パスワード認証も追加しておきます。
補足
こちらの説明不足がありました・・・。 申し訳ないです。 上記の補足のような環境です。 よろしくお願いします。
補足
お返事ありがとうございます。 バイナリーエディタで書き換えるしかないですか・・・。 windowsのレジストリはさほど詳しくないので、正直厳しいです。 windowsのスレッドで質問してみます。 いろいろとアドバイスありがとうございました。