tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 では、セキュリティが強化・変更されて
いますので、この問題がより浮き彫りになってきます。



なので、まずはプログラムを修正する前に、そのアプリを管理者モードで実行してみて、
原因が権限にあるのかどうか、問題の切り分けを行っておいた方が良いでしょう。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。