1

在开始之前,让我为我几乎不具备 UAC 编程知识而道歉。也就是说……</p>

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

谢谢

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

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

编辑:我运行其他程序 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());
    }
}
4

2 回答 2

3

在 Visual C++ 中,您会在 Manifest 选项(链接器设置的一部分)下找到选项:

Visual Studio 11(测试版)中的 UAC 设置

于 2012-04-11T16:32:06.060 回答
0

这个链接回答了我的问题。我想它引用非托管 DLL 的清单文件这一事实使我无法搜索。

于 2012-04-17T21:45:30.220 回答