【发布时间】:2013-12-14 16:35:14
【问题描述】:
我有一种情况,用户可以配置某些文件的目标位置(正在下载和安装以与应用程序一起使用)。有两个配置的位置,一个系统位置和一个用户位置。该应用程序是一个(基于 Lua 的)命令行工具。
在安装之前,我通过写入一个临时文件并再次删除它来检查可写位置。如果失败,我会以提升的权限重新启动相同的命令,允许管理员安装,但不允许普通用户安装。
问题:系统位置默认位于C:\Program Files\ 内,受保护(不是问题)并重定向(这是问题)到C:\Users\<name>\AppData\VirtualStore\Program Files\... 目录。
由于这种重定向测试成功,正在安装的东西没有提升特权。因此最终出现在VirtualStore,而不是收到用户没有所需权限的错误。
问题:那么如何在不调用到 VirtualStore 的重定向的情况下测试实际的 C:\Program Files\ 是否可写?
【问题讨论】:
-
Wow64DisableWow64FsRedirection.
-
@Sneftel 那是为了 64/32 位兼容性。不适用于与我的问题相关的 UAC。然后还有;我只能访问命令行命令或 Lua 脚本。不适用于任何 Windows API 函数。
-
不会检查您的管理员权限是否足够?
-
@npocmaka 不,因为位置是可配置的,所以如果它位于不需要管理员权限的位置,它应该可以正常工作,而无需不必要地请求管理员权限。
-
我不知道细节,但 UAC 虚拟存储重定向只发生在某些可执行文件中,因此您可以通过在清单中放置适当的标志来使您的程序免受它的影响。跨度>
标签: windows batch-file command-line lua command-prompt