在开始之前,让我为我几乎不存在的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());
}
}
答案 0 :(得分:3)
在Visual C ++中,您可以在Manifest选项下找到选项(Linker设置的一部分):
答案 1 :(得分:0)
这link回答了我的问题。我认为它引用了一个未管理的DLL的清单文件抛弃了我的搜索。