【发布时间】:2014-04-29 15:30:38
【问题描述】:
我的安装程序以提升的权限运行并将文件 (A) 写入 $APPDATA (C:/ProgramData) 以及将文件写入 $PROGRAMFILES。文件 A 是一个名为 Revit 的应用程序读取的 .addin 文件。
我的问题:因为文件 A 是由管理员进程创建的,所以当用户是非管理员 windows 用户时,Revit 无法读取此文件。
我想编辑文件A 以便非管理员 windows 用户可以读取它,但我不知道怎么做。你能建议我如何做到这一点吗?
我尝试过使用 NSIS 函数 SetFileAttributes "myFilePath.addin" NORMAL 但这不起作用。
注意:我知道我可以在没有提升权限的情况下运行我的安装程序,然后 Revit 可以读取该文件,但正如我上面提到的,我的安装程序也会写入 $PROGRAMFILES,所以我需要提升权限。
【问题讨论】:
-
$APPDATA 不是 C:\ProgramData 除非您先执行
SetShellVarContext all。您能否澄清一下您是在谈论用户 %APPDATA% 还是共享的 %ALLUSERSPROFILE%? -
%ALLUSERSPROFILE% 和 %PROGRAMDATA% 下的文件不应由非管理员修改。这是一个共享位置,当多个用户更改文件时,事情就会中断。 (使用“切换用户”或远程桌面时,两个不同的用户可以同时访问该文件!)
标签: windows nsis file-permissions user-permissions