0

私はWindowsシステムプログラミングに非常に慣れていません。私のプロジェクトでは、32/64 ビット プロセス用に登録された「ProgramFiles」の場所を読み取る必要があります。

これらのフォルダーの値を使用するSHGetKnownFolderPathか、システム レジストリから読み取るかのいずれかですが、セキュリティ上の懸念がいくつかあります。セキュリティと信頼性の観点から、これら 2 つの方法を比較してください。

4

1 に答える 1

1

レジストリ内の文書化されていないランダムな場所から何かを読み取ることはありません。これは、Windows が現在そのデータを格納している場所の実装の詳細にすぎないためです。次のことが簡単に発生する可能性があります。

  • Windows の次のバージョンでは、そのようなデータを別の場所に保存する必要があると判断するでしょう。
  • あなたが見つけたデータは、いくつかの構成でのみ存在します (特定の IE バージョンがインストールされている、マシンが Active Directory に参加していない、フォルダー リダイレクトが配置されていないなど) - しかし、それを知ることはできません。保証するドキュメントはありません。あなたは何でも。

正しい方法は、OS が提供するドキュメント化されたインターフェイスを使用することです。Microsoft は互換性を明示的に約束しています (ドキュメントに従って使用された場合、今日動作するパブリック関数は明日も引き続き動作することを約束します)。


tl;dr : 使用SHGetKnownFolderPath- またはSHGetFolderPath、Vista より前の Windows バージョンとの互換性を維持したい場合は、Windows XP がまだすべての OS X バージョンを合わせたよりも多くの市場シェアを持っているように見えることを考えると、これは一般的には良いことです.

于 2015-05-16T19:57:20.657 に答える