ファイルを開くときの「セキュリティの警告」ダイアログを出さないようにする。

ネットワーク共有フォルダ上にある実行ファイルを実行すると以下のようなダイアログが表示されることがある。

「セキュリティの警告」ダイアログ

このダイアログを出さないようにするには、以下の手順でセキュリティを緩める。

1、インターネットエクスプローラを開き、メニューから「ツール」「インターネットオプション」を選択する。

2、インターネットオプションダイアログの「セキュリティ」タブを選択する。

3、「セキュリティ設定を表示または変更するゾーン・・・」で「信頼済みサイト」を選択し、「サイトボタン」をクリックする。

4、「信頼済みサイト」ダイアログで、「このゾーンのサイトにはすべてサーバーの確認・・・」チェックボックスを解除し、「この Web サイトをゾーンに追加する」のテキストにネットワークドライブのパスを入力し、「追加」ボタンをクリックする。

「信頼済みサイト」ダイアログ

5、「追加」をクリックすると、Web サイトにfile://プロトコルとサーバー名が追加される。

6、このダイアログを閉じて、「このゾーンのセキュリティのレベル」を「中低」にし、「OK」をクリックする。

「インターネットオプション」ダイアログ

≪追記≫
上記のやり方だとできない場合がある。以下のようにレベルのカスタマイズで、「アプリケーションと安全でないファイルの起動」を有効にする。
newd

テストアプリ
https://skydrive.live.com/redir.aspx?cid=f0d9ddc561f5cf32&resid=F0D9DDC561F5CF32!128

アプリケーションの設定をどうやって保存するか? ini vs レジストリ vs xml

1, その保存場所について

いままでは設定の保存はGetPrivatePrifile* APIを使ってiniファイルに保存していればよかったんですが、Vistaの登場でそういうわけにはいかなくなってしまいました。Vistaでは”Program files”下に置かれたアプリがexeのあるフォルダにファイルを作ることも書き込むことも許してくれないみたいです。

iniファイルの利点は、フォルダを削除すればアプリケーションのすべてのファイルを一括削除できることにあると思います。痕跡は残りません。もちろんOSがいろいろ残すでしょうから痕跡が全く残らないわけではありませんが。また設定ファイルのせいでアプリの挙動がおかしくなったときでも、iniファイルを削除してしまえば初期値に戻るので復旧が簡単です。

復旧といえばインストーラでインストールもアンインストールもできなくなって困った経験がある人も多いんじゃないでしょうか?

さて、レジストリに書き込むとユーザーごとに別々の場所に書くことになるので、アンインストーラーが本当に全員分の設定を削除してくれているのかはわかりません。もちろんこれはユーザーごとの”Documents and Settings”配下にデータを置いた場合も同じです。つまりアプリを色々使えば使うほどゴミファイルがどんどんたまっていってしまうのです。またアプリの設定場所が固定されているとウイルスも作りやすくなってしまいます。

よってアプリの設定情報は、そのフォルダの配下に置いた方がいいんじゃないでしょうか。ユーザーごとに分けたい場合は”user”フォルダを作成し、その配下におけばいいですし。

2, 保存のフォーマット

話は変わってxmlですが、なんか呼び方がserialilzeとかdeserializeとかになってますね。でもこれって退化じゃないでしょうか?いままではそういうことを意識しなくてもよかったのに連続化という下位概念を持ち出してくるわけですから。

そしてこれは言葉の問題だけじゃなくて本当に意識しなければいけないのではないでしょうか?iniファイルやレジストリの場合には、保存の際、それが壊れてしまうということを意識しなくてもよかったと思いますが、xmlで一気に書くとなると、もし書き始めたときにPCが固まってしまったら全部壊れるんじゃないかとか、また、ユーザーがエディタでそれをいじって読み込み不能になって、終了時デフォルト値のまま全部保存しちゃって結局全部消えちゃうとか、あるいはクラスの構成が変わったときの互換性は大丈夫かとか、考えなくてはいけないことが一気に多くなるような気がします。もちろんちゃんと調べたわけではないので嘘いってるかもしれませんが。

逆にxmlで有利な点はUTF-8で書けることだとおもいます。そしてそれはWindows98系でも同じなんでしょう(多分)。iniファイルだとそれが難しいです。W系のAPIを使ってしまうと98系で動かなくなりますし、A系だと中国語や韓国語が保存できません。あえてやるとすればGetPrivateProfileStructでバイナリ保存でしょうが、これだとユーザーが編集できなくなってしまいます。