Comment forcer une application WPF à s'exécuter en mode Administrateur

j'ai une application WPF qui accède aux Services windows, programmeurs de tâches sur la machine locale. Lorsque je déploie cette application WPF et que je l'exécute sans "exécuter en tant qu'administrateur" , elle échoue car elle n'est pas capable d'accéder aux Services windows et aux ordonnanceurs de tâches sur la machine locale. Si je l'exécute avec" Run as Administrator", cela fonctionne correctement.

Comment faire fonctionner mon application par défaut en mode administrateur lorsqu'elle est déployée en production?

38
demandé sur SVI 2011-03-11 21:08:47

2 réponses

Vous devez ajouter un app.manifest. Changer requestedExecutionLevel à partir de asInvokerrequireAdministrator. Vous pouvez créer un nouveau manifeste en utilisant la boîte de dialogue Ajouter un fichier, le modifier pour requérir l'administrateur. Assurez-vous que vos paramètres de projet sont définis pour utiliser ce manifeste ainsi. Cela vous permettra tout simplement de double-cliquer l'application et il sera automatiquement invite à l'élévation si elle n'est pas déjà.

voir ici pour plus documentation:

http://msdn.microsoft.com/en-us/library/bb756929.aspx

modifier: Pour ce que ça vaut, l'article utilise VS 2005 et à l'aide de mt.exe pour intégrer le manifeste. si vous utilisez Visual studio 2008+, c'est intégré. Ouvrez simplement les propriétés de votre projet, et dans l'onglet "Application" vous pouvez sélectionner le manifeste.

65
répondu vcsjones 2011-03-11 18:35:30

Si vous ne voulez pas cassé la Clickonce ce code est la meilleure solution:

using System.Security.Principal;
using System.Management;
using System.Diagnostics;
using System.Reflection;
//Put this code in the main entry point for the application
// Check if user is NOT admin 
if (!IsRunningAsAdministrator())
{
    // Setting up start info of the new process of the same application
    ProcessStartInfo processStartInfo = new ProcessStartInfo(Assembly.GetEntryAssembly().CodeBase);

    // Using operating shell and setting the ProcessStartInfo.Verb to “runas” will let it run as admin
    processStartInfo.UseShellExecute = true;
    processStartInfo.Verb = "runas";

    // Start the application as new process
    Process.Start(processStartInfo);

    // Shut down the current (old) process
    System.Windows.Forms.Application.Exit();
    }
}

/// <summary>
/// Function that check's if current user is in Aministrator role
/// </summary>
/// <returns></returns>
public static bool IsRunningAsAdministrator()
{
    // Get current Windows user
    WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();

    // Get current Windows user principal
    WindowsPrincipal windowsPrincipal = new WindowsPrincipal(windowsIdentity);

    // Return TRUE if user is in role "Administrator"
    return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
}

Fondée en: http://matijabozicevic.com/blog/wpf-winforms-development/running-a-clickonce-application-as-administrator-also-for-windows-8

0
répondu Mårshåll 2018-08-12 01:37:13