私はWindowsシステムプログラミングに非常に慣れていません。私のプロジェクトでは、32/64 ビット プロセス用に登録された「ProgramFiles」の場所を読み取る必要があります。
これらのフォルダーの値を使用するSHGetKnownFolderPath
か、システム レジストリから読み取るかのいずれかですが、セキュリティ上の懸念がいくつかあります。セキュリティと信頼性の観点から、これら 2 つの方法を比較してください。
私はWindowsシステムプログラミングに非常に慣れていません。私のプロジェクトでは、32/64 ビット プロセス用に登録された「ProgramFiles」の場所を読み取る必要があります。
これらのフォルダーの値を使用するSHGetKnownFolderPath
か、システム レジストリから読み取るかのいずれかですが、セキュリティ上の懸念がいくつかあります。セキュリティと信頼性の観点から、これら 2 つの方法を比較してください。
レジストリ内の文書化されていないランダムな場所から何かを読み取ることはありません。これは、Windows が現在そのデータを格納している場所の実装の詳細にすぎないためです。次のことが簡単に発生する可能性があります。
正しい方法は、OS が提供するドキュメント化されたインターフェイスを使用することです。Microsoft は互換性を明示的に約束しています (ドキュメントに従って使用された場合、今日動作するパブリック関数は明日も引き続き動作することを約束します)。
tl;dr : 使用SHGetKnownFolderPath
- またはSHGetFolderPath
、Vista より前の Windows バージョンとの互換性を維持したい場合は、Windows XP がまだすべての OS X バージョンを合わせたよりも多くの市場シェアを持っているように見えることを考えると、これは一般的には良いことです.