重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちわ。

linux上からwindowsのレジストリ値の取得に苦戦しています・・・。
(windowsの復旧が目的ではありません)

やろうとしていることは
「linuxでwindows領域をマウントし、レジストリの値を取得する」
です。
「/WINDOWS/system32/config」フォルダの中にあるレジストリ情報から値を取得したいと考えています。
linux上からwindowsレジストリの
「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」
の値を参照できれば問題は解決します。

linux上で「regedit」を動かすことができれば解決できるのですが、そのようなツールは発見できませんでした。
linuxにmonoを入れて.NETを動かせる環境を作ってみたのですが、RegistryKeyクラスを使用できないようなのであきらめました。

いくつかアプローチの方法は考えられると思いますが、とりあえずlinux上からレジストリの値を見ることができればそれでOKです。値を変更したりはしません。

【環境】
・linux:ubuntu9.04
・windows:XP home edition SP3
windowsとlinuxをデュアルブートしています。

どなたか方法のわかるかたがいらっしゃいましたら、ご解答お願いします。
よろしくお願いします。

A 回答 (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. …
なお、このサイトの画像は近日中に削除します。

この回答への補足

お返事ありがとうございます。

なるほど。
windowsをゲストOSとしたVirtual環境を作って、そこにレジストリデータを移してregeditを起動するということですね。
ということはlinux単体でレジストリを参照するのは不可能ということでしょうか。

>Windowsでエクスポートしたファイルをfedora12に取り込めばfedora12で編集できます

というのは、特別な操作ですか?
ここを理解できれば解決に繋がりそうな気がします。
よろしくお願いします。

補足日時:2009/12/22 10:28
    • good
    • 0

> Virtual環境を作って、そこにレジストリデータを移してregeditを起動するということですね。



違います。
その方法ではVirtualなWindows環境でregeditを起動することになります。(Windowsでregeditを起動するのは当たり前の方法ですね)
その方法では質問にあるように「Linux上からWindowsのレジストリを取得」ということにはなりません。
そこまでこだわる理由は判然としないのですが、質問とおりに行なうには「LinuxからWindowsにアクセスしてregeditを起動する」必要があります。

> やろうとしていることは
「linuxでwindows領域をマウントし、レジストリの値を取得する」
です。

これは無理があります。Linux用のregedit(たとえば Wine regedit のようなツール)を作成する必要があるからです。
このようなことをしなくても、もっと簡単に(シンプルに)LinuxからWindowsのあらゆるアプリにアクセスできる方法があるわけですから「Linux用のregedit」を開発するヒトはいないと思います。

> というのは、特別な操作ですか?

今回はレジストリの話ですのでレジストリデータ->エクスポート->テキストデータにして利用できるという、普通の操作のことを書いています。
    • good
    • 0
この回答へのお礼

大変参考になりました。
レジストリの取得についてはまた別の方法を考えたいと思います。
度々答えていただきありがとうございました。

お礼日時:2009/12/22 17:03

NO.1です。


書き忘れました。
WindowsXPを休止状態で終了している場合は、休止状態のため操作できないといったエラーメッセージが出ると思います。
必ず電源を切るか、再起動状態からUbuntuを立ちあげるとうまくいくと思います。
休止状態を強制解除する方法もありますが、危険を伴うのでお勧めできません。

この回答への補足

お返事ありがとうございます。
こちらの説明不足があったようなので補足させていただきます。

linux側からwindows領域のマウントはすでにできています。
そして目的のファイルである
「/WINDOWS/system32/config」フォルダ
まで行き着くことはできています。
しかし、その後そのconfig内の「software」ファイルからレジストリの情報を入手できません・・・。
そのファイルを開く手段がわからない状態です。
おそらく暗号化もしくは特別な構造で書かれていると予想しています。
windowsならregeditがあるのでそれで参照できますが、linux上ではどうしたらいいのかがわからないという状態です。

ややこしくて申し訳ありません。
よろしくお願いします。

補足日時:2009/12/22 03:42
    • good
    • 0

> とりあえず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:\以下のフォルダとファイルが表示されると思います。
後は、コマンドを使い目的のファイルなりフォルダまでいけると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!