シンプルぱっと2 Windows Vista対応完了
Posted on :| コメント (0) | トラックバック (0)
シンプルぱっと2のWindows Vistaへの対応が完了しましたので、報告します。
基本的に取り立てて特殊なことをしたわけではなく、Windows Vistaだけデータの保存場所を変更しただけです。
次回リリース分から、一応Vista対応となります。
■Windows Vistaに対応させるための覚え書き
自作のソフトをWindows Vistaに対応させるための覚え書きを書いておきます。 これはプログラムを組まない人にはまったく意味のない情報なので、興味のない方は無視してください。
Windows Vistaはセキュリティ対策と称して、いろいろな制限事項が加わりました。特にしつこいぐらいに出てくるのは、 UAC(User Account Control)です。何か変わった操作をするたびに、UACによる問い合わせが出てくると思います。
また、Windows VistaはProgram Filesなどのシステムフォルダにデータを保存しようとすると、
勝手にVirtualStoreフォルダに保存してしまいます。この部分の出来があまりよくないため、
シンプルぱっと2をはじめとする一部ソフトで動作不具合が発生しています。
しかし、システムフォルダ以外にデータを保存するようにすれば、やりたい放題です。
つまり、Windows Vistaに対応させる鍵は、データの保存場所をシステムフォルダ以外にすることです。
■データの保存場所の指定
お行儀の悪いプログラムは、ドライブの直下(ルートフォルダ)に勝手にフォルダを作ります。Microsoftもよくやりますが、 吉田はこのような暴挙に出るソフトが大っ嫌いです。これに比べれば、 インストール先のフォルダのしたにデータを保存する仕組みの方がよほど行儀が良いと思っています。
しかし、Microsoftの方針が変更され、アプリケーションデータは、
Windows2000/XP:C:\Documents and Settings\All Users\Application
Data
Windows Vista:C:\ProgramData
フォルダに保存するように変更になりました。XPまではここに保存しなくても何の支障もありませんでしたが、 Vistaでは勝手に保存場所を変更されてしまいます。これを避けるためには上記のフォルダに変更する必要があります。
しかし、データフォルダの保存場所の変更は、気をつけないとユーザーの環境の違いでエラーが出る場合があります。特に、 フォルダを決め打ちするようなやり方は問題有りです。
そこで、SHGetSpecialFolderPathというAPIを利用します。 このAPIはWindowsの特殊フォルダパスを取得するためのAPIです(Windows2000以降でないと利用できない)。 引数として、CSIDL_COMMON_APPDATA (&H23)を指定すると、 アプリケーションデータフォルダが返されます。
Private Declare Function SHGetSpecialFolderPath Lib "SHELL32" Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner As Long, ByVal lpszPath As String, ByVal nFolder As Long, ByVal fCreate As Long) As Long
Public Function GetSpecialFolder() As String
Dim ret As Long, path As String'CSIDL_COMMON_APPDATA = &H23 = C:\ProgramData
path = String$(255, vbNullChar)
ret = SHGetSpecialFolderPath(vbNull, path, &H23, 0)
path = left$(path, InStr(path, vbNullChar) - 1)GetSpecialFolder = path
End Function
これでOKです。ただし、Windows9x系のOSではいろいろと支障があるので、 インストールフォルダのしたにデータを保存した方が無難です(バージョンにより処理を分ける)。
■レジストリへの保存
何かと嫌われ者のレジストリですが、そもそもデータはここに保存しろと指定してきたのは、
Microsoftです(レジストリはWindows95ではじめて導入されました)。
しかし、これにもいろいろと制限が加わっています。まず、
VistaではHKEY_LOCAL_MACHINEにデータを書き込むことは出来ません。管理者権限が与えられないためです。
LinuxなどのOSでは当たり前なのですが、Windowsは基本的に管理者権限で動かしてきたOSなので、
この変更は大きなものになります。
異常終了させないようにするためには、HKEY_CURRENT_USERに保存するようにしなければなりません。
■雑感
Windowsのセキュリティが強化されることは結構なことです。ただ、それでもセキュリティホールがなくならないのですが。
今回紹介した変更点は、Microsoftのセキュリティに対する取り組みの一環ですが、
マルチユーザー環境を前提とした従来までのUACの考え方に基づくところに疑問を感じます。
WindowsはデスクトップOSとしてシェアNo.1であり、これは疑いようのない事実です。また、 パソコンが安価になったことにより、1人に1台のパソコンが与えられています。唯一家庭内で使用されるパソコンのみが、 複数のユーザーが利用するものとなりますが、それでも家族という社会の最小単位であることを考えると、 ここにマルチユーザーの考え方を安直に持ち込むことに疑問を感じます(子供や嫁に見せたくないフォルダがあることは確かですが……笑)。
多くのセキュリティ上の脅威はインターネットを通じてやってくるわけで、そこを強化しない限りはUACをいくらいじっても無駄です。 例えば、MSNやHotmail利用者のメールにHTMLメールが多いのはなぜでしょうか?多くのユーザーがいると思われるOutlook Expressのデフォルト設定もHTMLメールのままです。テキスト形式なら何の脅威にも為らないメールが、 HTMLメールになったとたん、非常に危険な存在になります。
Microsoftは互換性を損なう余計な変更よりも、過去の自社製品やサービスについて対策を講じるべきですね。
トラックバック
このエントリーのトラックバックURL:
コメント
- Search
- 最近の記事
- カテゴリー
- 過去の記事
-
- 2011年05月
- 2011年03月
- 2011年02月
- 2011年01月
- 2010年12月
- 2010年11月
- 2010年10月
- 2010年09月
- 2010年08月
- 2010年07月
- 2010年06月
- 2010年05月
- 2010年04月
- 2010年03月
- 2010年02月
- 2010年01月
- 2009年12月
- 2009年11月
- 2009年10月
- 2009年09月
- 2009年08月
- 2009年07月
- 2009年06月
- 2009年05月
- 2009年04月
- 2009年03月
- 2009年02月
- 2009年01月
- 2008年12月
- 2008年11月
- 2008年10月
- 2008年09月
- 2008年08月
- 2008年07月
- 2008年06月
- 2008年05月
- 2008年04月
- 2008年03月
- 2008年02月
- 2008年01月
- 2007年12月
- 2007年11月
- 2007年10月
- 2007年09月
- 2007年08月
- 2007年07月
- 2007年06月
- 2007年05月
- 2007年04月
- 2007年03月
- 2007年02月
- 2007年01月
- 2006年12月
- 2006年11月
- 2006年10月
- 2006年09月
- 2006年08月
- 2006年07月
- 2006年06月
- 2006年05月
- 2006年04月
- 2006年03月
- 2006年02月
- 2006年01月
- 2005年12月
- 2005年11月
- 2005年10月
- 2005年09月
- 2005年08月
- 2005年07月
- 2005年06月
- 2005年05月
- 2005年04月
- 2005年03月
- 2005年02月
- 2005年01月
- 2004年12月
- 2004年11月
- 2004年10月
- 2004年09月
- All Entries
- Comments
-
- 地震とストレージの関係
永ちゃん (03/18)
吉田章太郎 (03/19)
- 地震の影響
永ちゃん (03/12)
吉田章太郎 (03/13)
- 無茶の代償
副将軍 (02/17)
吉田章太郎 (02/17)
- 本年の展望
yodog (01/09)
吉田章太郎 (01/20)
- ノロウィルス感染
永ちゃん (01/17)
吉田章太郎 (01/20)
- 地震とストレージの関係
- TrackBacks
-
- Powered by