是否是非托管代码所需的清单文件?

时间:2012-04-11 16:26:39

标签: c# c++ security manifest uac

在开始之前,让我为我几乎不存在的UAC编程知识道歉。那说......

我有一个c#应用程序启动一个完全不同的程序的setup.exe。其主要目的是帮助第二个项目在UAC下运行。因此简而言之,它在提升的命令提示符下运行程序setup.exe文件。我无法控制第二个程序,所以让它与UAC兼容不是一个选择。我在Vista首次发布时编写了我的程序,并且找到了很少的UAC信息。现在请记住,以这种方式运行setup.exe文件实际上是可行的,并允许程序在UAC上运行。但是我程序的一部分还添加了一个“theirapp.exe.manifest”文件,其中“requireAdministrator”作为执行级别。所以我的问题是,当我最终尝试运行的程序是非托管应用程序(CBuilder C ++)时,我甚至需要该文件。在某个地方,我认为需要一个清单文件。但现在我被告知他们只适用于.NET应用程序。

由于

编辑:总结一下......在UAC下运行非托管程序需要清单文件吗?

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
    <requestedPrivileges>
      <requestedExecutionLevel
        level="requireAdministrator"
        uiAccess="false"/>
    </requestedPrivileges>
  </security>
</trustInfo>

编辑:我运行OTHER程序setup.exe的主要方法

private void RunElevated()
{
    ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", @"/C " + AppDomain.CurrentDomain.BaseDirectory + @"setup.exe");
    processInfo.Verb = "runas";

    try
    {
        Process.Start(processInfo);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }
}

2 个答案:

答案 0 :(得分:3)

在Visual C ++中,您可以在Manifest选项下找到选项(Linker设置的一部分):

UAC settings in Visual Studio 11 (beta)

答案 1 :(得分:0)

link回答了我的问题。我认为它引用了一个未管理的DLL的清单文件抛弃了我的搜索。