【发布时间】:2011-09-02 03:58:35
【问题描述】:
我有一个“自动升级”机制,它在 Windows XP 下已经工作了多年,但在 Windows 7 下失败了,因为提示用户(在 Windows XP 下从未存在过)授予程序运行权限没有出现管理员权限。
win32 程序(用 Borland Delphi 编写)使用 LogonUser() 和 ImpersonateLoggedOnUser() 来模拟用户(具有管理员权限的本地帐户),以便它可以替换 Program Files 文件夹中的选定文件。
如果我使用此用户帐户手动登录到 Windows 7,然后尝试删除 Program Files 文件夹中的文件,Windows 7 会提示我允许程序继续运行 - 如果我授予它权限,则文件将被删除,如果我拒绝权限报告'访问被拒绝'并且不允许删除。
当尝试与上述相同的事情时,“访问被拒绝”是没有任何提示给用户的结果。
我在一个类似的问题 herabouts(关于临时文件的创建(其中给出的答案的主旨是“不要这样做”)中看到这样的提示可以“在代码中”提出,但我看不到该方法的实际解释位置。
【问题讨论】:
-
+1 个很好的问题。你跳过 Vista 了吗?
-
是的,虽然我已经运行 Windows 7 一年了,但直到现在我的软件用户才准备从 Windows XP 迁移到 Windows 7,所以我不能推迟解决问题不再。
标签: delphi windows-7 elevated-privileges