2010-12-30 12 views
0

私は古いアプリのアップデートに取り組んでいます。それは、アプリケーションと同じディレクトリにあるいくつかの依存関係ファイルを持っています。明らかに、これはWindows Vistaが出てきたときに破った(APIに違反し、Vista/7がこれを強制する(XPはそうでない)ので)。クロスプラットフォームの方法で依存ファイルを処理するにはどうすればよいですか?

理想的には、私はちょうどWindowsのためのアプリに何かをハードコーディングしないようにしたいと思います。もし私が持っていれば私はそれで生きることができます。私はすでにAPPDATAとLOCALAPPDATA環境変数を引っ張ってその道をたどってきましたが、彼らはあなたに現在のユーザー領域を与えて以来、何の助けにもなりません...私はこれらをすべてのユーザーのどこかにアクセス可能にするために必要とし、彼らはすべてのユーザーappdata領域に入るWindows APIの期待に従っています。

提案?

答えて

1

あなたが実際にクロスプラットフォームを意味し、Vistaに準拠していない場合、正しい方法はPreferences APIです。前回私はVistaでそれを試みましたが、システムストアは機能しませんでした。

Vistaだけであれば、システム環境変数を取得してその方法で参照することができます。

+0

私たちはMac OS Xと* nixオペレーティングシステムもサポートしていますので、実際には完全にクロスプラットフォームな単一の方法でやりたいと思います。しかし、OSに依存したコーディングをしなければならないと、私はそれを使って暮らすことができます。 まだ、すべてのユーザーappdataストアを指すシステム環境変数が見つかりませんでした。私は実際には、それがエラーの起こりやすいプロセス(特に、MicrosoftがWindowsの将来のバージョンで何らかの理由で場所を変更する場合)であるように思えるので、自分で構築しようとは思わない。 –

0

私はWindows固有の場所があるかもしれないと思います...隠されたディレクトリだから最初は混乱しましたが、 "ALLUSERSPROFILE"環境変数はWindows上の正しい場所のようです。

誰かが道を知っているなら、まだ何かを本当にクロスプラットフォームを探しています。

+1

プリファレンスAPIは、正式な真のクロスプラットフォームの方法です(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6565257のバグを修正するのに十分注意している場合)。私はWindows上でALLUSERSPROFILEハックを使用し、他の場所ではPreferences APIを使用すると言います。 – Yishai

+0

それはVistaの場合はかなり簡単にする必要があります決定するように見えます。 Vista上でのみハックを試みることさえできるかもしれない。 –

+0

ヤック。 Preferences APIはWindows上で深刻なUACの問題に遭遇します... –

関連する問題