【问题标题】:Adding a manifest file to my application still doesn't give it elevated privileges向我的应用程序添加清单文件仍然不会赋予它提升的权限
【发布时间】:2018-01-19 17:01:34
【问题描述】:

this question 的回答中所述,我向我的.NET Core 应用程序添加了一个清单文件,稍后我将通过调用dotnet.exe run application.dll 来运行该应用程序。我没有使用mt.exe - 据我了解,它不适用于我的目标框架,仅适用于“普通”.NET 应用程序。

我的清单文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <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">
        <!-- UAC Manifest Options
             If you want to change the Windows User Account Control level replace the 
             requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            Specifying requestedExecutionLevel element will disable file and registry virtualization. 
            Remove this element if your application requires this virtualization for backwards
            compatibility.
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!-- A list of the Windows versions that this application has been tested on and is
           is designed to work with. Uncomment the appropriate elements and Windows will 
           automatically selected the most compatible environment. -->

      <!-- Windows Vista -->
      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->

      <!-- Windows 7 -->
      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->

      <!-- Windows 8 -->
      <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->

      <!-- Windows 8.1 -->
      <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->

      <!-- Windows 10 -->
      <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->

    </application>
  </compatibility>

  <!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
       DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need 
       to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should 
       also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
  <!--
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
  </application>
  -->

  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
  <!--
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>
  -->

</assembly>

如您所见,我正在请求提升权限 - 在我的情况下是为了导出一些注册表项。 使用dotnet.exe run application.dll 运行.dll 时,应用程序本身可以工作,但我仍然收到拒绝访问的错误。除此之外,通常应该有一个 UAC 提示,不是吗?

为什么这不起作用?我做错什么了吗?我是不是忘记了什么?也许有人知道这是否是因为 .NET Core?由于 .NET Core,我已经遇到了一些关于一些库和包的其他问题......

【问题讨论】:

  • .NET core 在这方面被破坏并忽略了清单文件。

标签: c# .net-core manifest uac elevated-privileges


【解决方案1】:

使用类似 Resource Hacker 的工具来确保您的 RT_MANIFEST 确实被嵌入为资源:

如果您的编译器/链接器没有将RT_MANIFEST 资源添加到您的.exe(正如jjxtra 所建议的那样),那么请使用不同的开发环境。

或者将清单放在与可执行文件相同的文件夹中:

  • MyApplication.exe
  • MyApplication.exe.manifest

【讨论】:

    猜你喜欢
    • 2011-01-11
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 2012-06-27
    相关资源
    最近更新 更多