Installshield : 调用 icacls 更改特殊文件夹的写入权限

Installshield : calling icacls to change write permission for special folder

我创建了一个 Installshield 2015 (Installscript),它在安装目录中安装了一个 .NET 应用程序。

.NET 应用程序依赖于 SQL CE 4.0 数据库。

安装过程在管理员或本地管理员帐户下运行。

在 Installshield 项目中,我已将清空的 SQL CE 4.0 数据库 .sdf 文件放入 [CommonAppDataFolder] 中。安装过程会将数据库复制到以下位置:

Windows Vista(或更高版本):C:\ProgramData\MYCOMPANY\MYAPP\database.sdf

在安装过程结束时,MSI 将调用一个批处理文件来为 "Users" 组设置写权限,如下所示(因为在 commonAppData 文件夹中创建文件时获得了所有权):

icacls C:\ProgramData\MYCOMPANY /T /grant *S-1-5-32-545:W

该应用程序将在标准用户进程(未通过 UAC 提升)下执行,以便 "Users" 组的成员连接并写入紧凑型数据库。

我想知道是否允许我在不为 IT 管理员创建安全漏洞的情况下执行 'icacls' 命令,我是否必须考虑其他组 SID?

提前感谢您的回复,

运行 icacls 命令对您的安装创建的文件夹和文件是可以接受的。在任何其他文件夹上这样做都被视为安全漏洞(一些防御软件能够检测并阻止它)。

但是,至少在企业环境中,我建议不要硬编码 SID,除非有充分的理由(例如,您的安装自行创建的用户或组)。
相反,设置应该显示一个对话框,允许指定将应用权限的用户 and/or 组(本地组和域组)(实际上,那些可以 运行 应用程序的用户) .
为此,您可以使用 SdLogonUserBrowse() 函数。