限定アクセス権下のINIファイルNo.03638
安久津 さん 99/07/01 14:59
 

こんにちは秀丸担当さん、安久津といいます。

$$MyMacroIniFile = hidemarudir + "\\MyMacro.ini";
// 又は、$$MyMacroIniFile = $$MacroPath + "\\MyMacro.ini";
というファイルがあるとして、

WindowsNTで、秀丸本体のフォルダ、又は秀丸マクロフォルダに
書き込む権利の無いユーザーのもとで、
writeinistr $$MyMacroIniFile, "SECTION", "STRINGKEY", "moji";
writeininum $$MyMacroIniFile, "SECTION", "NUMBERKEY", 1;
等の、マクロはどうなるのでしょうか?

また、ぜんぜん権利の無いユーザーの基で、
$$stringKey = getinistr( $$MyMacroIniFile, "SECTION", "STRINGKEY" );
##numberKey = getininum( $$MyMacroIniFile, "SECTION", "NUMBERKEY" );
は、どうなるのでしょうか?

アクセス権のことは全く知らないので、
以上よろしくご教授願います。

ではでは。
# メールで初投稿。(^^)

[ ]
RE:03638 限定アクセス権下のINIファイルNo.03639
杉浦 まさき さん 99/07/02 00:07
 
安久津さん、こんばんは。
杉浦 まさき です。

>WindowsNTで、秀丸本体のフォルダ、又は秀丸マクロフォルダに
>書き込む権利の無いユーザーのもとで、
>writeinistr $$MyMacroIniFile, "SECTION", "STRINGKEY", "moji";
>writeininum $$MyMacroIniFile, "SECTION", "NUMBERKEY", 1;
>等の、マクロはどうなるのでしょうか?

これを試そうと思って、間違えて ini ファイルのアクセス権を
「自分だけ書き込み拒否」にして上のマクロを実行したら、
write* の直後の result が 1 になりました??
#でも ini ファイルのタイムスタンプは変わってないです。

しかも、中身を見ようと思って開こうとしても
「他のプログラムが開いているために開けません」と
なりました(常駐秀丸その他怪しそうなソフトを終了しても)。

… WritePrivateProfile**() のバグかなぁ…??

#家は NTWS4.0 SP5 です。


[ ]
RE:03639 限定アクセス権下のINIファイルNo.03640
杉浦 まさき さん 99/07/02 00:12
 
ども、杉浦 です。

先のテストの追加ですが、
アクセス権を元に戻した(「自分だけ書き込み拒否」を削除)ら、
何故か開けるようになりました(^^;。

ってことは、ini ファイルをオープンして
ガメたままにしてるのはOS自身じゃねぇのか?という疑いが
ますます濃くなりました(^^;。

#フォルダのアクセス権の場合もテストしてみます。>安久津さん


[ ]
RE:03640 限定アクセス権下のINIファイルNo.03641
杉浦 まさき さん 99/07/02 00:32
 
三たび 杉浦 です。

>#フォルダのアクセス権の場合もテストしてみます。>安久津さん

やってみた所、以下のようになりました。

ini ファイルがあるフォルダに以下のアクセス権を追加して実験
追加するアクセス権:「自分」の「書き込み」を「拒否」

writeini** 系: result は常に 1 になるが、
         実際に結果は書き込まれていない。

getinistr() : "" を返す。
getininum() : 0 を返す。

#writeini** の result って、WritePrivateProfileString() の
 返り値から判断してるんですよね?>担当様


[ ]
RE:03641 限定アクセス権下のINIファイルNo.03645
安久津 さん 99/07/02 17:11
 
こんにちは杉浦さん、安久津です。
まずは、私の環境です。
Win95 4.00.950 B
IE 4.0 SP1

発言#03641で杉浦さん書く
>writeini** 系: result は常に 1 になるが、
>         実際に結果は書き込まれていない。
>getinistr() : "" を返す。
>getininum() : 0 を返す。
INIファイルに対して、result はまったく当てにならないみたいです。
#ヘルプにも書いていないし。
自分でテストしてエラー処理は次のようになりました。

// 文字列の場合
$$value = "moji";
writeinistr $$MyMacroIniFile, "SECTION", "strkey", $$value;
$$valueInIni = getinistr( $$MyMacroIniFile, "SECTION", "strkey" );
if( $$value != $$valueInIni ){
if( $$valueInIni == "" ){
 message "アクセス権が限定されている\nまたは、INIファイルが64KBを越える";
 // フォルダが無い場合もある。
}else if( rightstr( $$value, 1 ) == " " ){
 message "末端のスペースは保存できません";
}else if( strstr( $$value, "\n" ) != -1 ){
 message "改行は保存できません\n総じて制御文字は保存できません";
}else if( strstr( $$value, "\t" ) != -1 ){
 message "タブは保存できません\n総じて制御文字は保存できません";
}else{
 message "わけわかんないッス\n制御文字含んでいませんか?";
}
}
//数値の場合
##value = 1;
writeininum $$MyMacroIniFile, "SECTION", "numkey", ##value;
##valueInIni = getininum( $$MyMacroIniFile, "SECTION", "numkey" );
if( ##value != ##valueInIni ){
 message "アクセス権が限定されている\nまたは、INIファイルが64KBを越える";
 // フォルダが無い場合もある。
}else if( ##value == 0 ){
 message "エラーチェック不可能";
}

発言#03639で杉浦さん書く
>しかも、中身を見ようと思って開こうとしても
>「他のプログラムが開いているために開けません」と
>なりました(常駐秀丸その他怪しそうなソフトを終了しても)。
私も、このメッセージを一度だけ見ました。
しかし、どうしてそうなったかは不明です。
Win95ですから、アクセス権は関係ありませんね。

発言#03640で杉浦さん書く
>ってことは、ini ファイルをオープンして
>ガメたままにしてるのはOS自身じゃねぇのか?という疑いが
>ますます濃くなりました(^^;。
何らかのキーと値をINIファイルに保存してから、
直ぐにその INIファイルを秀丸で開くとメチャクチャなものを
見る時があります。マジ笑えます。(^^)
てっきり別なファイルを開いたのかと思っちゃいます。
#だって、INIファイルの体裁を取っていないから。

何度もテストして頂きありがとうございました。m(__)m
関連することをマクロ会議室の方に書きます。

ではでは。

[ ]
RE:03641 限定アクセス権下のINIファイルNo.03648
秀丸担当 さん 99/07/02 17:28
 
>#writeini** の result って、WritePrivateProfileString() の
> 返り値から判断してるんですよね?>担当様

writeini** の result は何も値を入れていません。でたらめな値だと思います。
まちがっていたらごめんなさい。

フォルダのアクセス権についても、ただ何も考えずWritePrivateProfileString()
をして、そのまま続行しているだけです。

WritePrivateProfileString()のエラーチェックがあったほうがいいでしょうか。

[ ]
RE:03648 限定アクセス権下のINIファイルNo.03651
安久津 さん 99/07/02 19:32
 
>WritePrivateProfileString()のエラーチェックがあったほうがいいでしょうか。

エラーチェックがあれば、マクロの方のエラー処理も簡略化します。
しかし、公開するようなマクロを書いている人でもアクセス権のことを、
考えてコーディングしているのかどうか怪しいです。
実を言うと、INIファイル使いまくりマクロを作成していまして(作成済み)、
ふと、アクセス権のことを思い出したので、質問しただけなのでした。
それに私は、result についてとやかく言えない身分なので(ベータテストより)、
(私自身は)エラーチェックはなくても良いです。

杉浦さんはどうでしょうか?>杉浦さん
杉浦さんもアクセス権のエラー処理をしていないですよね?

ではでは。
#ていうか、書き直すのがイヤなんです。(^^;

[ ]
RE:03651 限定アクセス権下のINIファイルNo.03653
杉浦 まさき さん 99/07/03 00:04
 
担当様、安久津さん、こんばんは。
杉浦 まさき です。

>>WritePrivateProfileString()のエラーチェックがあったほうがいいでしょうか。

うーん、確かにあったとしても実際にマクロ側でチェックするかどうか
怪しいので(^^;、必要ないかもしれないですね。
しかし、いざという時のためにも result には
正常な返り値が入っていた方がいいと思いますが…。


>杉浦さんもアクセス権のエラー処理をしていないですよね?

…してませんね(^^;。
#「ini ファイルのアクセス権を変更して下さいね」と
 マニュアルに書いたことはありますが(^^;。


[ ]