タイトル : Re: 不揮発性レジストリの書き込み方 投稿日 : 2009/10/15(Thu) 22:22 投稿者 : 魔界の仮面弁士
> > 管理者権限を持てば、書けます。 > ということは、「不揮発性でレジストリに書き込む」ということは、「管理者権限でレジストリに書き込むためのプログラムを実行する」ことという意味なのですね。 違います。それとこれとは別の話です。 揮発性キーとは、再起動すると消えてしまう一時的な設定です。 不揮発性キーはその逆で、再起動しても残る永続的な設定です。 RegSetValueEx の第一引数には、レジストリキーのハンドルを渡しますよね。 つまり書き込む前に、そのレジストリ キーを開いておく必要があるという事です。 そして、そのキーを新たに作成する場合、RegCreateKeyEx を使う事になります。 そして不揮発性かどうかの指定は、この関数に指定した定数にて決定されます。 REG_OPTION_NON_VOLATILE 不揮発性(ディスク書き込み)。再起動しても失われない。 REG_OPTION_VOLATILE 揮発性(メモリ書き込み)。再起動すると失われる。 しかし、XP では正常に実行できていたという事から、このプログラムが 揮発性キーを作成していたという可能性は低いと考えられます そこで、管理者権限の話となります。 そもそも HKEY_CLASSES_ROOT というのは、通常、インストーラなどが扱うべき場所です。 読み込みは許されていますが、書き込みには充分な権限が必要です。(Vista 以前でも) XP であっても、Administrators ではなく、Users 権限のみのユーザーが実行すれば、 レジストリ登録は失敗するでしょう。Vista では、セキュリティが強化・変更されて いますので、この問題がより浮き彫りになってきます。 なので、まずはプログラムを修正する前に、そのアプリを管理者モードで実行してみて、 原因が権限にあるのかどうか、問題の切り分けを行っておいた方が良いでしょう。 |