允许非管理员用户进程读取文件

时间:2014-03-22 02:36:50

标签: windows nsis file-permissions user-permissions

我的安装程序以提升的权限运行,并将文件(A)写入$APPDATA(C:/ ProgramData)以及将文件写入$PROGRAMFILES。文件A是由名为Revit的应用程序读取的.addin文件。

我的问题:由于文件A是由管理进程创建的,因此当用户是非管理员窗口用户时,Revit无法读取此文件。

我想编辑文件A ,以便非管理员窗口用户可以阅读,但我不知道如何。你能建议我怎么做到这一点吗?

我尝试过使用NSIS函数SetFileAttributes "myFilePath.addin" NORMAL,但这不起作用。

注意:我知道我可以在没有提升权限的情况下运行我的安装程序,然后Revit可以读取文件,但正如我上面提到的,我的安装程序也写入$PROGRAMFILES所以我需要提升权限

1 个答案:

答案 0 :(得分:1)

使用AccessControl plugin更改DACL:

; This gives read access to the everyone group, use (BU) or (S-1-5-32-545) for BUILTIN\Users
AccessControl::GrantOnFile "$INSTDIR\myfile" "(S-1-1-0)" "GenericRead"