Bevor ich anfange, möchte ich mich für mein fast nicht vorhandenes Wissen über die Programmierung von UAC entschuldigen. Das sagte ...Ist eine Manifestdatei für nicht verwalteten Code erforderlich?
Ich habe eine C# -Anwendung, die die Setup.exe eines völlig anderen Programms startet. Sein Hauptzweck ist es, dieses zweite Programm unter UAC zu unterstützen. Kurz gesagt, es läuft die Datei setup.exe unter einer erhöhten Eingabeaufforderung. Ich habe keine Kontrolle über dieses zweite Programm, also ist es keine Option, es als UAC kompatibel zu machen. Ich habe mein Programm geschrieben, als Vista zum ersten Mal veröffentlicht wurde und es wenig UAC-Informationen zu finden gab. Beachten Sie, dass das Ausführen der Datei setup.exe auf diese Weise funktioniert und dass das Programm mit aktivierter Benutzerkontensteuerung ausgeführt werden kann. Aber Teil meines Programms fügt auch eine Datei "theirapp.exe.manifest" mit "requireAdministrator" als Ausführungsebene hinzu. Also meine Frage ist das, brauche ich sogar diese Datei, wenn das Programm, das ich letztendlich ausführen möchte, eine nicht verwaltete Anwendung (CBuilder C++) ist. Irgendwo auf dem Weg glaubte ich, dass eine Manifest-Datei benötigt wurde. Aber jetzt wird mir gesagt, dass sie nur für .NET-Apps arbeiten.
Dank
EDIT: Um es zusammenzufassen ... Ist Manifest-Datei eine nicht verwaltete Programm unter UAC laufen benötigt?
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
EDIT: Meine wichtigste Methode für die anderen Programme
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());
}
}
Manifestdateien sind * nicht * nur für verwaltete (.NET) Anwendungen. Die beiden Konzepte haben nichts miteinander zu tun. –