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

C# Windows Vista上的应用程序清单、管理权限和自动启动\7,c#,.net,manifest,autostart,C#,.net,Manifest,Autostart,所以,我有一个应用程序需要管理员权限才能工作 我创建了一个app.manifest文件。它工作得很好 但是现在我需要在Windows中将我的程序设置为autostart,我遇到了这个问题。如果我的程序有一个app.manifest文件-当windows启动时,程序不会加载,但是当我删除app.manifest文件时,它工作得很好 以下是app.manifest文件中的代码: <?xml version="1.0" encoding="utf-8"?> <asmv1:assemb

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

我创建了一个
app.manifest
文件。它工作得很好

但是现在我需要在Windows中将我的程序设置为autostart,我遇到了这个问题。如果我的程序有一个
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>

-->

谢谢你的帮助。

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

它没有运行,因为当您请求管理员访问时,用户需要将其授权为管理员(单击UAC允许按钮),如果它没有弹出,在图标托盘中应该有一些东西,用户可以通过点击图标来加载所有被阻止的exe,从而授予管理员权限。当您在没有清单的情况下运行时,它只会运行,因为它默认在标准访问(非管理员访问,基本用户级别权限)下运行,所以您的应用正在运行,但无法对系统或文件/路径访问项进行只有管理员提升的应用才能进行的更改。明白吗

问题是,如果exe是在安装过程中以管理员提升的权限安装并最初运行的,如何让它以管理员权限自动启动?这似乎有一些答案,但我仍在寻找哪一个(s)实际工作,是可靠的。基本上,如果它被提升了一次,当它自动启动时(在重新启动之后),它应该继续被提升(自动,不提示用户)——但它没有这样做,这就是问题所在。如果你在这方面有进展,请告诉我

更新:2012.11.10:

我找到了一个解决方案,使用windows任务计划程序 以编程方式计划为任务(即,在 重新启动/启动)&您可以选择将其作为提升的应用程序运行, 我认为你首先需要提升才能 在windows任务中计划此提升的自动运行项 调度程序。我知道这看起来很奇怪,但MS已经考虑到了这一点(而且只有 这是一种在启动过程中自动提升应用程序的方法,它们 还没有提供其他方法来实现这一点。因此,请使用适当的API 注册将运行应用程序的Windows任务计划


看看我的答案,让我知道如果你需要更多的方向,因为我正在积极研究同一个问题。