- ベストアンサー
linuxからwindowsのレジストリ値の取得方法
- linux上でWindowsのレジストリ値を取得する方法について調査しています。
- 具体的には、linuxでWindows領域をマウントし、/WINDOWS/system32/configフォルダ内のレジストリ情報から値を取得したいと考えています。
- しかし、linux上でregeditを動かすことができず、RegistryKeyクラスも使用できません。どなたか方法をご存知の方がいらっしゃいましたら、教えていただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
LinuxでWindowsのファイルをmaountしてアクセスしただけではダメです。 Linuxのスレッドでも書きましたが、LinuxからWindowsのregeditを起動できなければいけません。 つまりLinuxスタンドアロン環境でゲストOSにWindowsが起動しているVirtual環境で実現できます。 fedora12のVirtualBoxでWindows7のレジストリにアクセスしました。 レジストリに限らず全てのWindows7アプリケーションにアクセスして操作できます。 当たり前ですが変更や削除なども自在です。 データとして取得するにはWindowsでエクスポートしたファイルをfedora12に取り込めばfedora12で編集できます。 下記サイトの画像を参照してください。 ubuntu9.04、XP home edition SP3でも簡単に実現できるはずです。 http://ftlabo.hp.infoseek.co.jp/temp/f12-w7-reg.jpg なお、このサイトの画像は近日中に削除します。
その他の回答 (3)
> Virtual環境を作って、そこにレジストリデータを移してregeditを起動するということですね。 違います。 その方法ではVirtualなWindows環境でregeditを起動することになります。(Windowsでregeditを起動するのは当たり前の方法ですね) その方法では質問にあるように「Linux上からWindowsのレジストリを取得」ということにはなりません。 そこまでこだわる理由は判然としないのですが、質問とおりに行なうには「LinuxからWindowsにアクセスしてregeditを起動する」必要があります。 > やろうとしていることは 「linuxでwindows領域をマウントし、レジストリの値を取得する」 です。 これは無理があります。Linux用のregedit(たとえば Wine regedit のようなツール)を作成する必要があるからです。 このようなことをしなくても、もっと簡単に(シンプルに)LinuxからWindowsのあらゆるアプリにアクセスできる方法があるわけですから「Linux用のregedit」を開発するヒトはいないと思います。 > というのは、特別な操作ですか? 今回はレジストリの話ですのでレジストリデータ->エクスポート->テキストデータにして利用できるという、普通の操作のことを書いています。
お礼
大変参考になりました。 レジストリの取得についてはまた別の方法を考えたいと思います。 度々答えていただきありがとうございました。
- yakan9
- ベストアンサー率54% (2245/4126)
NO.1です。 書き忘れました。 WindowsXPを休止状態で終了している場合は、休止状態のため操作できないといったエラーメッセージが出ると思います。 必ず電源を切るか、再起動状態からUbuntuを立ちあげるとうまくいくと思います。 休止状態を強制解除する方法もありますが、危険を伴うのでお勧めできません。
補足
お返事ありがとうございます。 こちらの説明不足があったようなので補足させていただきます。 linux側からwindows領域のマウントはすでにできています。 そして目的のファイルである 「/WINDOWS/system32/config」フォルダ まで行き着くことはできています。 しかし、その後そのconfig内の「software」ファイルからレジストリの情報を入手できません・・・。 そのファイルを開く手段がわからない状態です。 おそらく暗号化もしくは特別な構造で書かれていると予想しています。 windowsならregeditがあるのでそれで参照できますが、linux上ではどうしたらいいのかがわからないという状態です。 ややこしくて申し訳ありません。 よろしくお願いします。
- yakan9
- ベストアンサー率54% (2245/4126)
> とりあえずlinux上からレジストリの値を見ることができればそれでOKです。 Linux上から、NTFSフォマットを読めるようにするには、 /etc/fstabにC:パーティションのエントリを作り、/mediaにそのシンボリックを定義するだけですけど。 Ubuntu側で下記の操作をしてみてください。 GNOME端末(1)で、 sudo su - root権限にする。 fdisk -l で、C:ぱーてぃしょんのエントリを調べ、 /dev/hda1とかでしようか。もし異なっていれば、読み替えてください。 もうひとつGNOME端末(2)を別に開き、エディタを起動する。 sudo gedit と入れ、root権限でGNOMEエディタを起動する。 /etc/fstabを開き、最後に次の行を追加して保存する。 /dev/hda1 /media/hda1 ntfs defaults 0 0 次に、GNOME端末(1)で次のコマンドを入れる。 cd /media mkdir hda1 ls -al と入れ、hda1が作られていることを確認する。 mount /media/hda1 と入れ、C:パーティションをマウントします。 cd hda1 ls -al とすれば、C:\以下のフォルダとファイルが表示されると思います。 後は、コマンドを使い目的のファイルなりフォルダまでいけると思います。
補足
お返事ありがとうございます。 なるほど。 windowsをゲストOSとしたVirtual環境を作って、そこにレジストリデータを移してregeditを起動するということですね。 ということはlinux単体でレジストリを参照するのは不可能ということでしょうか。 >Windowsでエクスポートしたファイルをfedora12に取り込めばfedora12で編集できます というのは、特別な操作ですか? ここを理解できれば解決に繋がりそうな気がします。 よろしくお願いします。