レジストリに格納されているProductIDを取得するには?

解決


超初心者  2002-02-23 03:43:45  No: 604  IP: [192.*.*.*]

Delphi超初心者です。

レジストリからWindowsのProductIDを取ってきたいのですが、Administratorの権限がないと読み込めないのです。

RootKey:=HKEY_LOCAL_MACHINE;
   if OpenKey(AppKey,False) then
         begin
              try
                 //ProductIdに入っている DWORDデータを取得
                  ID:=ReadString('ProductId');
              except
                   Exit;

ソースはこんな感じなのですが・・・
ヘルプなどを見ても、権限の話はどこにも出てこないのでできるかと思ったのですが・・・
ご存知の方がいたら、教えて下さい。
よろしくお願いします。

編集    削除
にしの  2002-02-23 06:47:11  No: 605  IP: [192.*.*.*]

初心者でも、達人でも、環境を書かないとコメントしようがありません。
Administrator権限が必要なOSは、NT, 2000, XPと、様々です。

ということで、ヒントだけ。
プログラムを書く人が、「この項目を読み込む」と考えてつくっても、OSは「管理者以外には書き込ませないぞ」とエラーを返すことがあります。
OSに、「この項目を読み込むだけで、書き込まないよ」と教えてあげればよいのです。

編集    削除
超初心者  2002-02-24 19:26:55  No: 606  IP: [192.*.*.*]

にしのさんのヒントで解決しました!
OpneKeyをOpenKeyReadOnlyにしたところ、動きました。
ありがとうございました。

OSなど環境も書かないといけないんですね。すみません。
OSによって違うという発想は全然ありませんでした。(汗)
プログラミング言語以外にも、勉強することたくさんありそうですね^^;;
ちなみに、環境はWindows NTです。
このプログラムを、95や98でも試してみたいと思います。

編集    削除