【发布时间】:2011-03-14 13:55:08
【问题描述】:
我编写了一个带有包含 requireAdministrator 的清单的程序。在启用了 UAC 的 Windows 7 系统上,Windows 会弹出一个对话框,询问权限,这是应该的。效果很好。
如果用户通过右键单击我的程序并选择“以管理员身份运行”来启动我的程序,那么 Windows 7 也会弹出一个对话框询问权限。但是,我的程序在我的程序的一些更深奥的部分中的运行方式存在一些细微差别。
那么“以管理员身份运行”和使用 requireAdministrator 的清单有什么区别?任何描述差异的文档链接将不胜感激。
编辑:这是启用了 UAC。
编辑:下面承诺的是我所看到的差异的完整解释。
我正在使用EasyHook library 将 DLL 注入另一个进程。当我的应用程序以“以管理员身份运行”运行时,注入的进程崩溃并且 EasyHook 返回错误“注入的汇编代码中的未知错误”。我的 DLL 中的任何代码都没有机会执行;崩溃发生在此之前。 (此外,即使我将 DLL 剥离为空,也会发生崩溃)
如果我正常运行我的程序(即通过 requireAdministrator 提升),一切正常。
我的应用程序由几个不同的可执行文件组成。用户启动的进程与执行注入的进程不同。
【问题讨论】:
-
如果您提及您观察到的差异可能会有所帮助。
-
我完全不希望有任何差异。 (我也很确定在流程的运行期间应该没有。)也许您正在从您的流程开始一个新流程?那么,第一个进程获得其特权的方式就不再是这一点了。
-
@Daniel:恐怕我做不到。我只是猜测任何差异都可能与子流程有关。因为如果我们不理会这些事情,我根本无法想象有什么不同。在这两种情况下,应用程序都以提升的权限运行(同样类型);唯一不同的是应用程序如何获得此海拔。
-
据我所知没有区别。我刚刚用一个简单的“Hello world”程序运行了一个测试,在这两种情况下它们都得到了完全相同的设置(相同的管理令牌、没有虚拟化等)。我真的不明白这两种方法有什么不同。你没有告诉我们什么?
-
我也希望没有差异。清单,exe上的compat设置,右键单击以管理员身份运行,从您提升的命令提示符启动,有很多方法可以提升它,但我会说提升是提升的。期待了解您认为它们之间的不同之处。
标签: windows windows-7 permissions uac manifest