当用户使用"以管理员身份运行"时,如何使用安装程序写入用户的"我的文档"目录

hd1*_*112 7 installation winapi uac inno-setup

我有一个程序需要在安装时在My Document目录中创建文件.这是一个严格的固定要求,没有改变这一点.问题是,如果用户不"以管理员身份运行"的安装文件,innosetups恒{}用户文档指向的管理员文档目录不是原来的登录的用户.

所以,谷歌搜索并发现:

通过Windows Vista/7上的Inno Setup将文件安装到原始用户的My Docs文件夹

答案是错误的,因为innosetup甚至说明了这一点

如果用户通过右键单击其EXE文件并选择"以管理员身份运行"来启动安装程序,则不幸的是,此标志将不起作用,因为安装程序无法使用原始用户凭据运行任何代码.如果从已经提升的进程启动安装程序,情况也是如此.但请注意,这不是Inno Setup特定的限制; 在这种情况下,基于Windows Installer的安装程序无法返回到原始用户凭据.

我想我可以鼓励用户不要使用Run As Administrator,但我不知道如何防止他进入高架.

我想在第一次运行时(安装后)可能让程序本身设置了My Documents\Program name目录.这种解决方法有效吗?它必须从其程序文件目录中复制文件作为可能受限的用户.是否有可能或者我会遇到priveleges问题?

Dea*_*nna 6

原件的答案是有效的,但没有建议.运行安装程序时,RunAsOriginalUser将以用户当前登录Windows的方式运行.这是通过让部分安装程序运行不活动,然后运行另一个升级的副本来完成实际安装来完成的.

当用户明确地执行"以管理员身份运行"时,"无法保存的存根"也会升级,在这种情况下,设置无法访问原始用户,因为该信息已被替换.

公认的做法是按照您的建议在应用程序本身中执行任何特定于配置文件的工作,这也意味着它将适用于其他用户以及Vista之前的LUA环境(您可能会遇到与您所看到的完全相同的情况)现在).