我在 Windows 7 x64 机器上遇到了一个非常奇怪的问题。我会尽力解释,所以不能太短。非常感谢您的耐心。
所以是 Win 7 x64。我在管理员权限帐户下工作,并且启用了 UAC。发生的情况是,当程序需要提升权限才能执行任务时 - 并且它知道如何请求它,没有古老的可执行文件 - 如果它从 -user- 临时文件夹运行,它根本不会请求它,然后失败。
我想这还不是很清楚,所以让我们一步一步看看当我从任何目录执行需要提升权限的程序时会发生什么。如果我尝试启动 TrueCrypt,我执行它,它会自动检测到它需要提升权限,但它没有,所以它会要求提升权限(UAC 提示,单击是,程序正常运行)。
现在让我们看一个从 temp 运行的程序。我将选择一个 NSIS 安装程序,比如 Firefox 安装程序。我执行它,它会自动解压到 temp,然后从 temp 启动 setup.exe。这个 setup.exe 可执行文件应该要求提升权限,但它没有,只是尝试在当前上下文中运行,然后进程终止。这就像在检查提升权限时,决定它已经拥有权限,但事实并非如此。
但是,如果我以管理权限直接启动 NSIS 安装程序,它会解压缩到同一个临时文件夹,然后 setup.exe 会继承提升并正常运行。
我必须补充的另一个奇怪的是,自动更新服务(例如 Mozilla 更新服务或 Google Chrome 更新服务)也无法安装更新。这更奇怪,因为这些服务以管理员权限运行,据我所知,它们会下载更新,然后以管理员权限启动安装程序。但在第一种情况下,发生的情况是相同的,服务会启动 setup.exe,然后进程会自动终止。
操作系统安装一年了,到今天为止运行良好;当然我不介意重新安装我的工作站,但我很想知道这里发生了什么。这个问题开始发生在一个正常的一天,我最近没有安装任何奇怪的东西。
答案1
好吧,我终于知道发生了什么,我的临时目录下“用户”组的一些权限(不可思议地)丢失了。读写权限仍然没有受到影响,但“遍历目录”和“执行”权限被禁用了。这导致试图提升另一个可执行文件的进程崩溃。
现在我正在尝试找出是什么改变了我的权限(可能是恶意软件),但这是另一个故事。