1

按照以下步骤将 UAC 清单添加到作为资源嵌入的 C# 项目中。

第 1 步工作正常,我在我的项目中创建 RC 文件作为描述的简单文本文件。

#include <winuser.h>
#define IDR_MANIFEST 1 // 2 for a DLL

IDR_MANIFEST RT_MANIFEST MOVEABLE PURE
{
 "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">
   <asmv3:trustInfo xmlns:asmv3=""urn:schemas-microsoft-com:asm.v3"">
     <asmv3:security>
       <asmv3:requestedPrivileges>
         <asmv3:requestedExecutionLevel
           level=""asInvoker""
           uiAccess=""false"" />
       </asmv3:requestedPrivileges>
     </asmv3:security>
   </asmv3:trustInfo>
  </assembly>"
}

然后使用 Visual Studio 命令提示符,我在第 2 步得到以下输出:

  c:\myproject>rc MyResourceFile.rc
  Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
  Copyright (C) Microsoft Corporation.  All rights reserved.


  ConfigurationManager.rc(4) : error RC2135 : file not found: 1

我认为这很愚蠢,对吧?

4

5 回答 5

1

没有repro,我看不出有什么问题。自 VS2008(可能是 VS2005 SP1 for Vista)以来,C# 编译器已经将 UAC 清单嵌入到程序集中。如果要修改它,请使用 Project + Add New Item 并选择“Application Manifest File”项目模板。

于 2010-12-14T15:02:55.883 回答
1

确保 rc 文件是 UTF-8 编码的。我尝试编译 ANSI 或 UTF-8 BOM 编码文件,但收到此错误消息。

于 2017-01-10T18:13:39.703 回答
0

正如 Hans Passant 所说,从 VS 2008 开始,您可以直接将清单文件添加到项目中。然后在项目的属性下,选择“应用程序”选项卡并从组合框“清单:”中选择清单文件。

于 2010-12-14T15:08:57.590 回答
0

我最终使用 mt.exe 在构建后步骤中将清单嵌入到 .exe 文件中。但汉斯的回答已经足够接近了。所以我猜“找不到文件”的谜团仍然没有解开……

于 2010-12-14T15:23:47.183 回答
0

尝试使用

包括“winuser.h”

代替

包括 <winuser.h>

即用双引号替换'<>'。

于 2013-05-17T14:11:52.140 回答