应用程序目录没有写权限保存配置文件的处理方法

应用程序目录没有写权限保存配置文件的处理方法

从XP开始,多出了一套叫ApplicationData的目录,由于是NT内核及多用户的引用,因此在没有管理员权限的帐号打开安装过的程序时,应用程序是无法写入自己的目录的,因此早期的一些程序会因此遇到一些故障.

解决这个问题的方法是获取ApplicationData的目录位置,根据自己应用程序的名称创建配置文件.

这些网上都能搜到,主要是使用SHGetFolderPath的API,这里要说下 int csidl这个参数的几个区别:

CSIDL_COMMON_APPDATA   所有用户都可以使用的应用程序配置,映射All Users\Application Data

CSIDL_APPDATA                指定用户使用的应用程序配置,并且可以通过域同步漫游的,映射<user name>\Application Data

CSIDL_LOCAL_APPDATA      本机使用,不能漫游的应用程序配置,映射<user name>\Local Settings\Applicaiton Data

另外,由于这些路径使用起来并不方便,因此一般我们还是习惯在应用程序下存储配置文件,这就涉及一个检测是否应用程序文件夹有写权限的问题.

我尝试过:

int _waccess( 
   const wchar_t *path, 
   int mode 
);
  MSDN里说这个函数可以用于判定一个文件夹是否有写权限,但是实际测试中,这个函数对于有权限控制的文件夹毫无作用,始终返回可写.
  因此,最笨的方法,依然是直接在应用程序目录下创建一个临时文件,创建成功说明可写,然后再删除这个文件(好恶心的方法).不过话又说回来,这是C时代的函数,应该不会做太多平台相关的判断.
 

你可能感兴趣的:(应用程序目录没有写权限保存配置文件的处理方法)