NT 4.0 で openreg が動かないNo.01264
PatoFo さん 98/07/01 10:38
 
こんにちは PatoFo と申します。
「マクロ開発者会議室」に上げていた発言に
レスが付かないのでこちらに移動してきました。

Windows NT Workstation 4.0 (SP3適用)で
秀丸マクロの openreg がレジストリキーの
オープンに失敗してしまいます。
(秀丸のバージョンは 2.22です。)
以下のマクロで openreg 実行後の result
が 0 になります。

// レジストリから WordPad.exe のフルパスを獲得する
openreg "LOCALMACHINE", "SOFTWARE\\" +
"Microsoft\\" +
"Windows\\" +
"CurrentVersion\\" +
"App Paths\\" +
"WORDPAD.EXE" ;
if ( 0 == result ){
message "キーのオープンに失敗!" ;
endmacro ;
} else {
// WORDPAD.EXE のパスを獲得する
$path = getregstr( "" ) ;
closereg ;
}

run $path ;

上例のマクロは WordPad.EXE のパスを調べ、起動するものです。
この方法で、自作のアプリケーションがどこにインストール
されたかを調べて、秀丸のマクロからそれを実行しようとしています。
Windows 95 では正常に動作します。また、HKEY_CURRENT_USER のサブキーであればo
penreg は正常に動作するようです。

これと似た現象を経験したことがありますが、
RegOpenKeyEx の第4引数に KEY_CREATE_LINK を含む値を指定する
とキーのオープンに失敗します。 (KEY_ALL_ACCESS を指定した場合も KEY_ALL_ACC
ESS が KEY_CREATE_LINK を含みますので同様に失敗します。)

openreg の仕様からして KEY_CREATE_LINK の指定は必要ないと
思われますが、上記の点を確認の上、もしそうであるのなら
KEY_CREATE_LINK の指定を外す事を検討していただけないでしょうか。(全然見当ち
がいの事を言っていたらごめんなさい。)

ということで、よろしくお願いいたします。

[ ]
RE:01264 NT 4.0 で openreg が動かないNo.01267
杉浦 まさき さん 98/07/02 00:36
 
PatoFo さん、はじめまして。
 & 横から失礼します。
 杉浦 まさき と申します。

>Windows NT Workstation 4.0 (SP3適用)で
>秀丸マクロの openreg がレジストリキーの
>オープンに失敗してしまいます。

>RegOpenKeyEx の第4引数に KEY_CREATE_LINK を含む値を指定する
>とキーのオープンに失敗します。

大分前に NIFTY の方でこの事を指摘したと思いましたが、
 まだ改善されてなかったみたいですね…(ToT)。
 #あの時は自分のマクロの方をいじれば対処できたので
  まだよかったんですが、
  今回のは他にどうしようもないでしょうねぇ…。
 というわけで(^^;、レジストリアクセス関数に
 読込み専用オープン関数の追加をお願いします。>秀丸95担当様
 #もしくは openreg の仕様変更でもいいですが。
  書き込みには createreg を使えばいいわけだし…って、
  他の人からクレームがついたら速攻で却下します(^^;。


[ ]
RE:01267 NT 4.0 で openreg が動かないNo.01270
秀丸担当 さん 98/07/02 14:58
 
>>RegOpenKeyEx の第4引数に KEY_CREATE_LINK を含む値を指定する
>>とキーのオープンに失敗します。
>
>大分前に NIFTY の方でこの事を指摘したと思いましたが、
> まだ改善されてなかったみたいですね…(ToT)。

すいません。m(_ _)m
覚えてますが、いつのまにかバグリストの奥のほうへいってしまっていました。
さっそく直したので、次のバージョンで直ります。

[ ]
RE:01270 NT 4.0 で openreg が動かないNo.01273
PatoFo さん 98/07/02 20:26
 

>さっそく直したので、次のバージョンで直ります。

すばやい応対、ありがとうございます。

ええと、次バージョンで、最初の発言で例にあげたマクロが、
修正の必要なく、そのままで動くようになると思っていいんですよね?

ということで、どうもお世話さまでした。

[ ]