13

SOに関する多くの質問は、「Windows開発者ガイドライン」または「Windows設計ガイドライン」は、一時データまたはプログラムデータをプログラムファイル領域に書き込むべきではないと言っていますが、私が知る限り、それらのどれも実際にドキュメントにリンクしているとは言えませんそれはそれだけです。MSDN を検索しても結果が得られませんでした。Windows はこの領域を読み取り専用にするため、OS によって強制される可能性がありますが、だからといって開発者がとにかくそこに書き込もうとしなかったわけではありません (たとえば、古い XP およびそれ以前のベースのプログラムを移植する場合)。

Windows の開発がこれほど遅くなったのに、それについて尋ねるのは奇妙に思えますが (以下のコメンターが指摘したように、10 年以上にわたって OS によって強制されてきたため)、人々を満足させるには、そのように記載されたドキュメントが必要な場合があります。 .

それを念頭に置いて、Microsoft は、アプリケーション データを Program Files 領域に書き込むべきではないことを示す文書を公開していますか? もしそうなら、それはどこにありますか?

4

2 に答える 2

13

Windows 7クライアントソフトウェアロゴプログラムの技術要件から:

デフォルトで正しいフォルダにインストールします

ユーザーは、選択した場所にアプリケーションをインストールするオプションを維持しながら、ファイルのデフォルトのインストール場所で一貫性のある安全なエクスペリエンスを提供する必要があります。また、アプリケーションデータを正しい場所に保存して、複数のユーザーが互いのデータや設定を破損したり上書きしたりせずに同じコンピューターを使用できるようにする必要があります。


Windowsは、プログラムとソフトウェアコンポーネント、共有アプリケーションデータ、およびユーザーに固有のアプリケーションデータを格納するために、ファイルシステム内の特定の場所を提供します。

  • アプリケーションは、デフォルトでProgramFilesフォルダーにインストールする必要があります。このフォルダにセキュリティ権限が設定されているため、ユーザーデータまたはアプリケーションデータをこの場所に保存しないでください強調を追加
  • コンピューター上のユーザー間で共有する必要のあるすべてのアプリケーションデータは、ProgramData内に保存する必要があります
  • 特定のユーザー専用で、コンピューターの他のユーザーと共有されないすべてのアプリケーションデータは、Users \ <username>\AppDataに保存する必要があります
  • 「Windows」ディレクトリやサブディレクトリに直接書き込むことは絶対にしないでください。フォントやドライバーなどのファイルをインストールするための正しい方法を使用する
  • 「マシンごとの」インストールでは、ユーザーデータは、インストール中ではなく、最初の実行時に書き込む必要があります。これは、インストール時にデータを保存するための正しいユーザーの場所がないためです。インストール後にマシンレベルでデフォルトの関連付け動作を変更しようとするアプリケーションの試みは失敗します。代わりに、デフォルトはユーザーごとのレベルで要求する必要があります。これにより、複数のユーザーが互いのデフォルトを上書きするのを防ぐことができます。

そして、WindowsNT4以前に戻ったNTファミリのすべてのWindowsバージョンにも同様のものがあると確信しています。


この質問も参照してください。


編集:この投稿のWindows7ロゴプログラムへの元のリンクはもう存在しません。ここに、Windowsデスクトップアプリの認定要件への現在のリンクがあります。セクション10を参照してください。アプリは、デフォルトで正しいフォルダーにインストールする必要があります

于 2012-10-31T17:42:30.640 に答える
0

それ以降のバージョンの Windows (Vista、7、そしてもちろんサーバー バージョン) では、「Program Files」を含む「特別なフォルダー」へのアクセス許可が制限されています。プログラムが昇格して、このフォルダーへの書き込みに十分な権限を持つようになったとしても、それはまだ悪い考えです。

これを述べているガイドラインは知りませんが、特別なフォルダーとその目的のリストがあります。イメージできるほぼすべてのタイプのデータ用の特別なフォルダーがあるという事実は、プログラム ファイル フォルダーを使用する必要がないことを意味します。特殊フォルダ一覧

于 2012-10-31T17:48:46.117 に答える