C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: PC再起動で登録したレジストリが消える


(過去ログ 135 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■79747 / inTopicNo.1)  PC再起動で登録したレジストリが消える
  
□投稿者/ アブサン (4回)-(2016/05/11(Wed) 21:34:23)

分類:[C/C++] 

VS2010のMFCで作成しております。

下記のようにしてレジストリ登録しており、レジストリ自体は
正常に書かれるのですがPC再起動で登録したレジストリが消えて
しまいます。

REG_OPTION_NON_VOLATILEの定義を調べると(0x00000000L) で定義
されています。

なぜ消えてしまうかがわかりません。
アドバイスいただけると助かります。

static BOOL WriteRegistory(char *entry, DWORD dwType, BYTE *data, int len)
{
	BOOL ret = FALSE;
	HKEY hKey;
	DWORD dwDisposition;

	if (RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY,
			0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
			NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
	{
		if (RegSetValueEx(hKey, entry, 0, dwType, 
			(const BYTE*)data, len) == ERROR_SUCCESS)
		{
			ret = TRUE;
		}
		RegCloseKey(hKey);
	}

	return ret;
}

引用返信 編集キー/
■79748 / inTopicNo.2)  Re[1]: PC再起動で登録したレジストリが消える
□投稿者/ とっちゃん (354回)-(2016/05/11(Wed) 22:14:17)
No79747 (アブサン さん) に返信
> なぜ消えてしまうかがわかりません。
> アドバイスいただけると助かります。
>

> if (RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY,
> 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
> NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)

ここで渡している、REG_KEY もしくはその親キーを
REG_OPTION_NON_VOLATILE 以外の値を指定して作成しているところはありませんか?

そうすると、再起動で消えてしまうはずです。

あと、効率が上がるわけではありませんが CRegKey というごく薄い
レジストリアクセス用クラスがあります。

ATLですが、MFCはATLの上に実装されているので、MFCが使える環境なら
例外なく利用可能です(VC6までの古いバージョンを除く)。

多少パラメータを省略できるという程度なので、利便性が上がるというほどではありませんが
レジストリキーのクローズし忘れなどは減ると思います。


引用返信 編集キー/
■79749 / inTopicNo.3)  Re[2]: PC再起動で登録したレジストリが消える
□投稿者/ アブサン (5回)-(2016/05/11(Wed) 23:10:49)
No79748 (とっちゃん さん) に返信

アドバイスいただきありがとうございます。

念のため、他でRegCreateKeyExしていないか確認した後
手動でレジストリ削除し、PGから再度レジストリ登録させ
PC再起動したところ解決してしまいました。

いったいなんだったのかキツネにつままれた気分です。

貴重なお時間を割いてご回答いただいて
大変申し訳けないです。。。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -