[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:6538] fiber.exeが使用するレジストリの管理



山口です.

Mew-win32 MLで,レジストリのアクセスコントロールが原因の
fiber.exe が使えない問題が報告されました.

皆さんご存じとは思いますが,Windows 2000 以降では,HKEY_LOCAL_MACHINE
へのアクセスが引き締められ,defaultではAdministrator権限以外では
レジストリキーの作成・変更等ができません.

対処としては,
(案1) レジストリのアクセス権を変更する or Administratorで変更する
(案2) install.exeからfiber.exeを実行しておく
(案3) HKEY_CURRENT_USER を使用する
の3つくらいが考えられると思います.
# 他に .INI ファイルによる管理に戻すという番外編もあるでしょうけれど...

fiber.exeの機能の一つに,拡張子データの追加機能があります.
北口さんが想定する,運用形態の在り方が今一つ見えていないので,
可能性のある候補を挙げてみました.

初期化ならびに拡張子データの管理を,管理者権限でコントロールするという
設計方針であれば,案1 についての案内をINSTALL.Meadowに追加するのが
betterだと思います.
別解が,案2 のような細工による回避でしょうか.

ユーザレベルでコントロールすべき内容ということであれば,
案3 で良いかなと思います.


個人的には,マルチユーザの利用形態を考慮して案3 を支持します.
patchを喰わせるより,replaseした方が早いとは思いますが,案3 の場合の
patchを添付します.

-- EY
--- fiber.c.orig	2004-12-27 20:25:24.151067200 +0900
+++ fiber.c	2005-05-11 17:08:46.134460800 +0900
@@ -361,7 +361,7 @@
   DWORD dwDisposition;
   char  *pt;
 
-  ret = RegCreateKeyEx( HKEY_LOCAL_MACHINE,
+  ret = RegCreateKeyEx( HKEY_CURRENT_USER,
 			FIBER_SUBKEY,
 			0,
 			"",
@@ -421,7 +421,7 @@
   int   i;
   char  szBuf[64];
 
-  ret = RegCreateKeyEx( HKEY_LOCAL_MACHINE,
+  ret = RegCreateKeyEx( HKEY_CURRENT_USER,
 			FIBER_SUBKEY,
 			0,
 			"",
@@ -494,14 +494,14 @@
   BOOL  fRet = TRUE;
   int   i;
 
-  ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
+  ret = RegOpenKeyEx( HKEY_CURRENT_USER,
 		      FIBER_SUBKEY,
 		      0,
 		      KEY_EXECUTE,
 		      &hKey );
   if ( ret != ERROR_SUCCESS ){
     if ( InitializeRegistry() ){
-      ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
+      ret = RegOpenKeyEx( HKEY_CURRENT_USER,
 			  FIBER_SUBKEY,
 			  0,
 			  KEY_EXECUTE,
@@ -738,7 +738,7 @@
   }
   *pt++ = '\0';
 
-  ret = RegCreateKeyEx( HKEY_LOCAL_MACHINE,
+  ret = RegCreateKeyEx( HKEY_CURRENT_USER,
 			FIBER_SUBKEY,
 			0,
 			"",