我有一个程序需要在安装时在我的文档目录中创建文件。这是一个严格的固定要求,没有改变这一点。问题是如果用户在安装文件上“以管理员身份运行”,innosetups 常量 {userdocs} 指向管理员的文档目录,而不是原始登录用户。
所以,谷歌搜索并发现了这个:
在 Windows Vista/7 上通过 Inno Setup 将文件安装到原始用户的 My Docs 文件夹
然而,答案是错误的,因为 innosetup 甚至指出
如果用户通过右键单击其 EXE 文件并选择“以管理员身份运行”来启动安装程序,那么不幸的是,此标志将不起作用,因为安装程序没有机会使用原始用户凭据运行任何代码。如果安装程序是从已经提升的进程启动的,情况也是如此。但是请注意,这不是 Inno Setup 特定的限制;在这种情况下,基于 Windows Installer 的安装程序也无法返回原始用户凭据。
我想我可以鼓励用户不要使用以管理员身份运行,但我不知道如何防止他不升职。
我正在考虑让程序本身在第一次运行时(安装后)设置 My Documents\Program 名称目录。这种解决方法会奏效吗?它必须以潜在受限用户的身份从其程序文件目录中复制文件。有可能还是我会遇到特权问题?