我想在安装运行时修改C:\ ProgramData中的用户权限。只需添加WRITE权限即可。我正在使用vb脚本来编辑msi表。
此查询正常运行,添加了行,但安装程序未设置权限。我在这里使用ALL权限设置,我不知道正确的通用读/写值是什么。
query =“INSERT INTO LockPermissions
(LockObject
,Table
,User
,Permission
)VALUES('COMMONAPPDATAFOLDER','目录','用户',268435456)“
我找不到一个有效的例子,它必须是一个非常常见的场景。我认为COMMONAPPDATAFOLDER解析为这样的路径:
C:\ ProgramData \ CompanyFoo \ Foo产品名称
但我不确定。我想在“CompanyFoo”目录上设置权限,但我不知道如何。
编辑:这是针对构建脚本,而不是自定义msi操作。我的问题是我没有使用像installshield这样的安装框架,我正在修改visual studio部署项目的残缺输出。
答案 0 :(得分:1)
我终于开始工作了。对于vs2010安装项目,COMMONAPPDATAFOLDER实际上不是c:\ programdata,它是c:\ programdata \ foocompany,您可以在项目设置中设置foocompany。所以这是正确的。 268435456 =所有权限。
'COMMONAPPDATAFOLDER
query = "INSERT INTO `LockPermissions` (`LockObject`, `Table` , `User`, `Permission`) VALUES ('COMMONAPPDATAFOLDER', 'CreateFolder', 'Everyone', 268435456)"
Set view = database.OpenView (query)
view.Execute
query = "INSERT INTO `LockPermissions` (`LockObject`, `Table` , `User`, `Permission`) VALUES ('COMMONAPPDATAFOLDER', 'CreateFolder', 'Administrators', 268435456)"
Set view = database.OpenView (query)
view.Execute
答案 1 :(得分:0)
为什么需要自定义操作将行插入lockpermissions表?只需将其直接写入MSI,因为Domain和User列是Formattable。