3

所以,我有一个需要管理员权限才能工作的应用程序。

我创建了一个app.manifest文件。它完美地工作。

但现在我需要将我的程序设置为在 Windows 中自动启动,我遇到了麻烦。如果我的程序有一个app.manifest文件 - Windows 启动时程序不会加载,但是当我删除app.manifest文件时 - 它运行良好。

这是app.manifest文件中的代码:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="update.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
    </application>
  </compatibility>
</asmv1:assembly>

谢谢你的帮助。

4

2 回答 2

4

它没有运行,因为当您请求管理员访问权限时,用户需要将其授权为管理员(单击 UAC 允许按钮),如果它没有弹出,则图标托盘中应该有一些内容,用户可以在其中加载所有被阻止的 exe单击图标以授予管理员权限。当您在没有清单的情况下运行时,它仅在运行,因为它默认以标准访问权限(非管理员访问权限,基本用户级别权限)运行,因此您的应用程序正在运行但无法更改系统或文件/只有管​​理员提升的应用程序才能执行的路径访问项目。找我?

问题是,如果您的 exe 已安装并且在安装过程中最初以管理员提升的权限运行,您如何让您的 exe 以管理员权限自动启动?对此似乎有一些答案,但我仍在寻找哪些答案真正有效且可靠。基本上,如果它被提升一次,它应该在它自动启动(重新启动后立即)时继续提升(自动,而不提示用户) - 但它没有这样做,这就是问题所在。如果你在这方面取得进展,请告诉我。

更新:2012.11.10:

我找到了一个解决方案,使用 Windows 任务调度程序以编程方式将其调度为任务(即在重新启动/启动期间运行 EXE)并且您可以选择将其作为提升的应用程序运行,我认为您需要提升到首先是为了能够在 Windows 任务计划程序中安排此提升的自动运行条目。我知道这似乎很奇怪,但是 MS 允许这样做(并且只允许这样做)作为在启动期间自动提升应用程序的一种方式,并且他们没有提供另一种方式来做到这一点。因此,使用适当的 API 注册一个 Windows 任务计划,它将运行您的应用程序提升。

于 2012-07-09T03:40:38.697 回答
0

我不确定,但可能与启动用户的身份验证有关。如果您还没有,您可以在那里查看详细信息。

于 2011-12-15T21:07:20.907 回答