|
![]() ![]() ![]() ![]() ![]() | |
先日、久々に会った人に「最近はどんなソフトを作っているんですか?」って聞かれました。 まぁ、色々作ってはいますけどね。 ここ最近を振り返ってみると、「いじくるつくーる」の更新がかなり頻繁になっている気がしますね。 新しい機能の追加もありますが、7~8年前に作り込んだバグが今更発覚して直しているパターンも結構あるような気がします。 そんなわけですが、来月上旬にも次の更新を予定していたりするので、その予告でも。
いじくるつくーるがソース表示のために利用しているウィンドウは、ヘルプ表示に用いているものと同じ、リッチエディットコントロールを利用したウィンドウなのですが、リッチエディットコントロールって、デフォルトでは64,000バイトまでの文字列しか入れられないんですね。 一般的には、通常のエディットコントロールは64KB制限はあるが、リッチエディットコントロールには制限がない(比較的新しいOSの場合)と言われていただけに、最初は何が起きたのかわからずにおりました。 しかも、いじくるつくーる開発当初は、context.rscも、そんなに大きくなかったですからね。作った当時では、この問題は発生しなかったというわけで。 で、リッチエディットコントロールを用いている場合でも、新しい制限サイズを与えない限りは64,000バイトのままなので、これ以上の部分を読み込めなかったというわけで。というわけで、ソースのサイズに合わせてリッチエディットコントロールのサイズ上限を再設定する修正を行います。
いじくるつくーるが対応している、zipフォルダ機能の有効化/無効化の機能は、Windows XPにのみ対応したものとなっています。 しかし、Windows Vista/7でも有効なことになっていて、この機能を操作できるようになっていました。(実行すると「失敗」となります) Windows XPでzipフォルダ機能(エクスプローラがzipファイルをフォルダのように扱う機能)を無効化する場合は、コマンドラインから revsvr32 /u zipfldr.dll 逆に有効化するには、 revsvr32 zipfldr.dll と入力するわけなのですが、この方法はWindows VistaやWindows 7には通じません。 ※参考程度に。 Windows Vistaでは、レジストリキー HKEY_CLASSES_ROOT\CLSID\{E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31} を削除すれば無効化しますが、再び有効化させるにはこのキーを「復活」させる必要があり、この「復活」作業をいじくるつくーるで行うことが困難であるため、実装していません。 (レジストリエディタなら、キー内の全データを保存することにより待避するか、キーをリネームする方法が一般的でしょうか。Widnows APIから、レジストリキーのリネームが簡単にできればよいのですが…。中身を一つ一つ複製して削除、複製して削除する作戦も思いついたのですが、セキュリティ情報などの細かいところのコピーが難しいんですよね。うーん) 同じく、Windows 7でも異なる手順(Windowsスマートチューニング参照)を実行する必要があるのですが、レジストリキーのセキュリティをいじる機能の実装が困難であるため、こちらも実装しておりません。 まぁそういうわけなので、zipフォルダ機能の有効化/無効化を正しく制限するための修正を行います。 Posted by 名無し at 2011/06/21 12:07:58 ヘッダにはRegRenameKeyがあれどもドキュメントがなく NtRenameKeyにはドキュメントがあれども保証がなく Posted by ayacy at 2011/06/23 00:58:07 なるほど。たしかにググると、非公開ながら何件かヒットしますね。 NtRenameKeyは、「将来的に変わるか消える」と書かれているものの、使ってしまいたい衝動に駆られる…。 Posted by ayacy at 2011/06/24 00:04:23 誘惑に負けて、RegRenameKeyで実装してしまいそうです…。 どうせWindows Vistaでしか使わない予定だし、おそらくVistaのServicePackでイキナリRegRenameKeyが無効にされることもないだろうし、、、やっちゃえ! やっちゃえ! 目次の表示: ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメール、フィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。 当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。 |
- 最近の更新 - |
|
3280004 (+0201)[+0552] Copyright© 2010-2025 INASOFT |