7

重複の可能性:
VS2008 セットアップ プロジェクト: 共有 (すべてのユーザーによる) アプリケーション データ ファイル?

すべてのユーザーがアクセスおよび編集できるアプリケーション データを配置するのに最適な場所 (パス) を教えてください。

これは Windows XP と Windows Vista の両方を考慮しており、上記のパスのファイルを変更しても UAC がトリガーされないことを期待しています!

4

10 に答える 10

5

プレーンな Win API:フォルダーの種類としてSHGetFolderPathCSIDL_COMMON_APPDATA

于 2008-10-03T13:39:56.847 に答える
2

.NET を使用している場合は、Application.CommonAppDataPath が機能するはずです。また、アプリケーションの仮想化がオフになっていることを確認してください

于 2008-12-31T11:06:01.780 に答える
2
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

C:\Documents and Settings\All Users\Application Data\ に解決する必要があります。

そこから、MyCompany\MyApp などのサブフォルダーを作成します。

于 2008-10-03T13:35:34.517 に答える
1

チェッカーは、C または C++ でこれを行うための重要な手がかりを提供します。だから私は彼の答えに投票しました。

彼が省略した詳細は次のとおりです。

// assumes
// company is a pointer to a character sting containing company name
// appname is a pointer to a character string containing application name
// fname   is a pointer to a character string cintaining name of file to be created

#include <shlobj.h>   // for SHGetFolderPath
#include <direct.h>   // for _mkdir

char path[MAX_PATH];
SHGetFolderPath(NULL,CSIDL_COMMON_APPDATA,NULL,NULL,path);
strcat(path,"/");
strcat(path,company);
_mkdir(path);
strcat(path,"/");
strcat(path,appname);
_mkdir(path);
strcat(path,"/");
strcat(path,fname);

// path is now a character string which can passed to fopen
于 2008-10-10T13:39:00.983 に答える
1

.NET を使用している場合は、Application.CommonAppDataPath が機能するはずです。

于 2008-10-03T13:38:06.337 に答える
1

%ALLUSERSPROFILE%\Application Data\App
これはおそらく、昇格された権限なしですべてのユーザーがアクセスできる唯一のディレクトリです。

于 2008-10-03T13:37:38.363 に答える
0

Vista 以降では、MS はSHGetFolderPath()の代わりにSHGetKnownFolderPath( ) を使用することを推奨しているようです。KNOWNFOLDERIDのリストから、要求するフォルダーを選択します。ここでの回答に基づいて、あなたが望む同等のものはおそらくFOLDERID_ProgramData. この質問はかなり古いものだと思いますが、アーカイブの目的で推測します..

于 2011-09-20T17:12:52.257 に答える
0

データベースに入れることもできます。

于 2008-12-31T11:09:01.337 に答える