我创建了一个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”组的成员连接并写入压缩数据库。
我想知道是否允许我执行'icacls'命令而不为IT管理员创建安全漏洞,如果我不得不考虑其他组SID?
提前感谢您的回复,
答案 0 :(得分:0)
在文件夹和&amp ;;上运行icacls命令是可以接受的。您的安装创建的文件。对任何其他文件夹执行此操作被视为安全漏洞(并且某些防御性软件能够检测并阻止它)。
但是,至少在公司环境中,我建议不要使用硬编码的SID,除非有充分的理由(例如,您的安装自己创建的用户或组)。
相反,设置应该提供一个对话框,允许指定将应用权限的用户和/或组(本地的,以及域名的)(有效地,那些可以运行应用程序的用户)。
您可以使用 SdLogonUserBrowse()函数来实现此目的。