放置应用程序数据的最佳位置?

时间:2020-03-06 15:04:30  来源:igfitidea点击:
Possible Duplicate:

  VS2008 Setup Project: Shared (By All Users) Application Data Files?

请有人建议放置某些应用程序数据的最佳位置(路径)是什么,所有用户都应该可以访问和编辑这些数据。

这是在考虑Windows XP和Windows Vista,并且我希望上述路径的任何文件中的更改都不会触发UAC!

解决方案

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

应该解析为C:\ Documents and Settings \ All Users \ Application Data \

在此创建子文件夹,例如MyCompany \ MyApp

VS2008安装项目:共享(按所有用户)应用程序数据文件?

%ALLUSERSPROFILE%\应用程序数据\ App
这可能是所有用户无需提升特权即可访问的唯一目录。

如果我们使用的是.NET,则Application.CommonAppDataPath应该可以工作。

普通Win API:SHGetFolderPath,使用" CSIDL_COMMON_APPDATA"作为文件夹类型。

如果用户不打算直接修改数据,而只能由应用程序修改,则IsolatedStorage http://msdn.microsoft.com/zh-cn/library/3ak841sy(VS.80).aspx

Checkers提供了使用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

If you're using .NET, Application.CommonAppDataPath should work.
  Also make sure that virtualization is turned off for your application

我们也可以将其放入数据库中。