在开始之前,让我为我几乎不具备 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());
}
}