c#更新程序权限

时间:2013-06-14 11:27:54

标签: c# file-permissions

我的更新过程有问题,我的程序是用c#编写的,我使用innosetup作为我的程序安装程序,一切都很好,除了我不能更新我的文件,因为它们在程序文件中..

我已经知道数据应保存在ApplicationData或CommodApplicationData目录中,并且我将它们用于我的配置文件,我设计了一个单独的应用程序(update.exe)来将新文件下载到ApplicationData(这里没问题)但是我希望update.exe能够将下载的文件移动到我的程序文件应用程序文件夹..(update.exe也在程序文件安装目录中)

我知道我需要管理员权限才能做到这一点,我应该向用户询问,但事情是像Firefox这样的其他应用程序已经完成了这项工作而没有要求用户获得管理员权限!他们是怎么做到的?!

先谢谢!

3 个答案:

答案 0 :(得分:0)

我认为他们在签署申请后会这样做。 您也可以签署您的计划,并按照他们的方式进行。 如果应用程序已签名,稍后您可以运行更新程序而无需获取 来自用户的管理员权限:)

  • 微软的数字证书是您需要跳过的。

答案 1 :(得分:0)

update.exe程序配置以管理员身份运行。 您需要修改嵌入在程序中的清单。将<requestedExecutionLevel>元素更改为:

    <trustInfo xmlns="urn:0073chemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
        <requestedExecutionLevel
            level="highestAvailable"
            UIAccess="true" />
        </requestedPrivileges>
    </security>
</trustInfo>

并将UIAccess元素设置为true。 看到 http://msdn.microsoft.com/en-us/library/ms742884.aspx

答案 2 :(得分:0)

您是否尝试添加嵌入式清单以获得许可?

这样的事情:

<?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="MyApplication.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>
</asmv1:assembly>

这将告诉操作系统您的应用程序需要一些权限,例如在应用程序文件夹中复制。

您可以在http://msdn.microsoft.com/en-us/library/bb756929.aspx

中查看配置方式