2

J'ai un projet d'installation (exécutant Windows 7) qui lance une action personnalisée à la validation qui démarre l'application qui vient d'être installée. Au cours du démarrage de cette application, j'ai une méthode qui vérifie le nom de l'utilisateur actuel pour effectuer une authentification. Lors de son lancement de cette action personnalisée Je reçois 'NTAUTHORITY \ SYSTEM' au lieu de 'DOMAIN \ USER'WindowsIdentity.GetCurrent() renvoie SYSTEM lorsqu'il est exécuté à partir d'une action personnalisée

Mise à jour: Ce lien de la réponse acceptée est ce que résolu mon problème:

How can I customize an MSI in the Visual Studio setup/deployment project?

Répondre

3

Vous devriez probablement lire la valeur de la propriété USERNAME MSI:

string username = Session.Property("USERNAME"); 

le puces fonctionnera en mode d'exécution immédiate; Cependant, en mode différé, vous devrez explicitement passer le nom d'utilisateur en utilisant la propriété CustomActionData à votre action personnalisée. Pour plus de détails voir ici:

Tip: MSI Properties and Deferred Execution

MISE À JOUR: Si vous voulez lancer l'application installée après l'installation terminée, vous pouvez préférer l'approche décrite dans cet article:

Launching Your Application After Install using Visual Studio 2005

ou utiliser le script d'Aaron Stebner pour modifier votre MSI:

How can I customize an MSI in the Visual Studio setup/deployment project?

+0

Le code où l'appel à « WindowsIdentity » est situé dans l'application qui est en cours d'installation, il n'a aucune connaissance du msi – jwarzech

+0

@jwarzech : Alors votre question semble être différente? "Comment lancer l'application installée après l'installation?" Quel outil utilisez-vous pour produire votre configuration? –

+0

J'ai un projet de déploiement VS2008 qui installe une application, puis appelle un CustomAction qui exécute «Process.Start (myapplication)». La première chose que l'application fait est de vérifier le WindowsIdentity et recherche l'utilisateur dans une table de base de données d'autorisation. – jwarzech

0

Le code ci-dessous est ce que je dans ma classe d'installation comme des actions personnalisées. Ceci renvoie l'utilisateur connecté actuel utilisateur et non « NTAUTHORITY \ SYSTEM »

IdentityReference identity = new System.Security.Principal.NTAccount(Environment.GetEnvironmentVariable("USERDOMAIN") + "\\" + Environment.GetEnvironmentVariable("USERNAME"))