我遇到了一个不寻常的问题,如果我允许应用程序自动更新运行,它们就会崩溃。
我运行的是相对标准的 Windows 7 Professional x64 系统。我实际上并没有在系统上安装太多东西。我通常在以受限帐户登录时使用我的计算机。
举个例子。我有印象笔记安装。我收到通知,有一个待处理的更新。它询问我是否要下载并更新,我同意了。我收到 UAC 提示,并输入了我的管理员用户名和密码,然后升级似乎正常完成。更新完成后,当我尝试运行 Evernote 时,我收到错误消息Windows 无法访问指定的设备、路径或文件。您可能没有适当的权限来访问该项目。
如果我使用 icacls 检查 Evernote 上的权限,我会看到这一点。
C:\Program Files (x86)\Evernote\Evernote3.5>icacls Evernote.exe
Evernote.exe No permissions are set. All users have full control.
Successfully processed 1 files; Failed processing 0 files
所以权限显然被搞砸了。如果我尝试通过文件系统查看权限,我会得到有关文件系统权限被搞砸的奇怪错误(抱歉,我没有写下来)。Windows 不允许我通过资源管理器界面获取所有权或替换文件系统权限。
如果我完全卸载 Evernote,删除程序文件夹并安装一个干净的副本,一切都会开始正常工作。
这个问题似乎发生在几乎所有想要自我更新的程序上。到目前为止,除了 Evernote,还包括 Adobe Acrobat、iTunes、Mozilla Firefox、包版本Google Chrome 和 VLC。
问题变得更加混乱了。Windows 已经更新了好几次,但更新后似乎没有出现任何问题。
我现在已经运行了几次 chkdsk /fa。我已经从 livecd 启动并运行 badblocks -sn /dev/hd
。我让 memtest86 运行了几次。硬件似乎没有问题。
我几乎要备份/重新安装系统了,但如果我能避免几个月这样做就好了。
所以我的问题是,是否有人知道为什么自我更新的第三方应用程序在更新时似乎会中断,你知道如何修复它吗?
答案1
文章Windows Vista 中的 NULL DACL 行为描述了与您遇到的情况相同的情况,当使用空 DACL 创建文件时会发生这种情况(与授予通用访问权限的空 DACL 不同)。
您可以在以下位置找到更多信息Vista 不兼容问题并不总是 Vista
我没有访问权限这一事实表明这肯定是一个空的 DACL。在 Vista 中,空的 DACL 实际上意味着“无访问权限” - 在 Windows XP 中,空的 DACL 意味着“所有者拥有完全控制权,其他任何人都无访问权限”。
总而言之,我想说 icacls 在骗你,而且可能自 XP 以来就没有更新过。自 Vista 以来,空 DACL 的行为已经改变,但 icacls 对此一无所知。
现在的问题是:为什么已安装的可执行文件最终根本没有 DACL。
当系统调用由应用程序发出时,它似乎在您的系统上系统地失败,但当系统调用由 Windows Update 发出时,它确实有效。
我会尝试两种解决方案:
- 关闭任何可以影响权限设置的安全应用程序,例如防病毒软件或防火墙
- 关闭 UAC
如果第一次测试结果为阳性,且问题出在已安装的安全产品上,那么重新安装 Windows 可能不是一个有效的解决方案。
答案2
我始终没有时间解决这个问题,后来又重新安装了。Harrymc 的回答可能有效。