Windows Vista \ 7上的应用程序清单,管理员权限和自动启动

时间:2011-12-15 20:31:00

标签: c# .net manifest autostart

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

我创建了一个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>

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

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

问题是,如果安装了管理员权限并且最初在安装期间使用管理员提升权限运行,那么如何使用管理员权限启动自动启动?似乎有一些答案,但我仍然在寻找哪一个实际工作和可靠。基本上,如果它被提升一次,它应该继续升高(自动,无需提示用户),当它自动启动时(重新启动后) - 但它没有这样做,这就是问题所在。如果你在这方面取得进展,请告诉我。

  

更新:2012.11.10:

     

我找到了一个使用Windows任务调度程序的解决方案   以编程方式安排作为任务(即,在期间运行EXE)   重启/启动)&amp;您可以选择将其作为提升的应用程序运行,   而且我认为你需要提升才能开始   在Windows任务中安排此提升的自动运行条目   调度。我知道这看起来很奇怪,但MS已经允许这样做了(而且只有   这是一种在启动过程中自动提升应用程序的方法   没有提供另一种方法来做到这一点。因此,使用适当的API   注册一个Windows任务计划,它将运行你的应用程序。

答案 1 :(得分:0)

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