Windows客户端开发

程序安装目录的权限问题

2018-11-29  本文已影响1人  mercurygear

一般情况下,默认的安装目录会是C:\Program Files或C:\Program Files (x86),用户没有修改UAC的话,我们的程序安装到这两个目录下后,对自己目录的文件进行添加/删除等操作是需要权限的,有时候这点很烦人,尤其是我们需要在自己目录写入一些配置的时候。
常用做法是把程序的数据、配置这些需要修改的内容,放到 %userprofile%下去,这里没有权限要求。
解决了这类问题,还是有另一类问题没能解决,就是有时需要对程序进行一些小修复,比如某个文件进行一下升级等等,这个时候就需要动到安装目录了。
弹出权限要求的框是可以解决这种问题,但是有没有更好一些,不打扰用户的做法呢?

其实我们可以在程序即将安装完成时,由安装包把我们的安装目录进行一些权限的修改,让普通用户权限也能对这个目录进行文件添加/删除等操作,这样后续我们程序的修复处理就会方便很多,做升级也会更容易一些。

以NSIS制作的安装包为例,只需要引入 AccessControl这个插件 ,然后在你的安装代码中,在安装目录的文件已经全部创建和释放完毕后,调用下面的函数设置下安装目录的权限即可:
AccessControl::GrantOnFile "$INSTDIR" "(AU)" "FullAccess"
这里的AU表示Authenticated Users用户组

最后我们安装之后,打开安装目录的属性看看,是不是如下所示:


安装目录属性

自己试试往这个目录增加/删除文件,已经不会弹出权限提示框了!

上一篇下一篇

猜你喜欢

热点阅读