为什么放弃默认选择Program Files 我一直百思不得其解.
都是UCA惹得祸
自从VISTA引入了权限机制UCA,对系统盘文件的读写经常会没有权限,虽然安装时候会取得权限安装,但是后面的软件操作会比较困难.
列举如下:
-
修改用户的配置 (
ini文件
) 或者 其他文本类 (xml等等
) -
软件的升级 (
假如仅升级一个动态链接库dll,而不重新安装程序
) -
其他对安装目录下文件的写操作 (
临时数据文件等
)
APPDATA的权限
%USERPROFILE%\AppData
系统变量直接会指到用户的文件,我们可以在资源管理器地址栏直接输入这个变量名,打开C:\Users\usename\AppData
系统设置这个文件也是为了方便权限管理,这个账户的程序不会被其他用户使用。 登陆的用户对此文件夹具有所有权限。用户数据的几个子文件夹不同; 所以我们也有必要使用这个文件夹来存放程序的数据文件或者安装目录.
VC++对此文件夹的获取###
void CMyView::getAppPath(CString &Apppath)
{
GetEnvironmentVariable(_T("APPDATA"), Apppath.GetBuffer(MAX_PATH + 1), MAX_PATH);
Apppath.ReleaseBuffer();
}
打包软件NSIS对此文件夹的获取
SetOutPath "$APPDATA\myapp"
SetOverwrite ifnewer
File "myapp.exe"
File "*.ini"
File "*.db"
File "*.dat"