11
votes

Comment spécifier les informations d'identification de l'utilisateur pour une application de clic-une fois?

Pour un fichier .exe régulier, je peux toujours cliquer avec le bouton droit de la souris et sélectionner "Exécuter comme ..". Comment puis-je exécuter une application de clic-une fois sous différentes références de la même manière?

Je parle de l'application elle-même, pas du programme d'installation.


0 commentaires

3 Réponses :


1
votes

Parlez-vous d'un processus unique, ou quelque chose qui doit se produire à chaque fois que votre code est exécuté sur plusieurs ordinateurs? Parce que si vous voulez simplement exécuter personnellement une application ClickOnce avec des autorisations élevées, sa assez simple. Cliquez une fois que les applications résident à% localAppData% \ apps \ 2.0 [OBFUSCASTEDFOLDEDERName]. Il vous suffit de trouver votre dossier d'application (l'horodatage doit être suffisamment d'informations), puis faites-lafoncler votre EXE et exécuter comme administrateur.

Si vous souhaitez le faire en code, la solution la plus facile est probablement de faire une application de blanchiment de coque autour de votre code, qui demande des autorisations élevées dans le code. Voici un exemple.


5 commentaires

Savez-vous si l'emplacement de l'application peut changer après une mise à jour automatique?


Ce que j'essaie vraiment de faire, c'est d'exécuter une autre fois sur un compte de domaine à partir d'un ordinateur qui ne fait pas partie du domaine (mais sur le même réseau).


Je ne crois pas que vous puissiez compter sur le chemin de rester cohérent, non.


Comment déployez-vous votre application ClickOnce? FileShare ou IIS hébergé? Si IIS, vérifiez cela. En fait, vérifiez-le de toute façon. Vous devriez être capable de passer en transmettant la connexion via URL. Telle que (somreserver / someclickonceapp.application? Nom d'utilisateur = Joe & Passwo RD = Corocks) msdn.microsoft.com/en-us/library/aa480721.aspx#admininc_topic5


De plus, je suppose que les deux approches ne effectueront pas la mise à jour automatique car je vais directement contre .exe.



1
votes

La réponse est vraiment non, vous ne devriez pas faire cela. Les applications ClickOnce sont installées sous le profil utilisateur et n'appartiennent qu'à cet utilisateur. Ils ne fonctionnent pas et ne fonctionnent pas comme une installation entièrement utilisée.

Notez également que si vous double-cliquez sur le fichier [EXE] (l'emplacement de laquelle change chaque fois qu'il y a une mise à jour), il ne recherchera pas les mises à jour, il ne vérifiera pas les fichiers pour s'assurer qu'ils ont convenu t été altéré avec. En d'autres termes, il ne sera pas exécuté comme une application ClickOnce.

Je pense aussi que passer le nom d'utilisateur et le mot de passe de la chaîne de requête est mal apprécié car toute personne exécutée de Fiddler ou Charles ou tout autre renifleur du trafic réseau sera en mesure de voir les informations d'identification.


1 commentaires

Voir la réponse ci-dessous, ce qui l'obtient sans codage de mots de passe. Que cela soit conseillé ou non n'est pas vraiment la question. Je ne suppose pas que les gens le feraient en fonctionnement normal, mais il est parfois nécessaire de tester les expériences des autres utilisateurs dans Dev.



24
votes

Ceci est réellement possible, il vous suffit de le faire en deux étapes. Vous devrez d'abord lancer ClickOnce ( dfsvc.exe >) en tant qu'utilisateur que vous essayez d'imiter, puis vous pouvez lancer l'application de déploiement à l'aide de rundll32 code>, quelque chose comme ça:

(de la ligne de commande) p>

1.- Cliquez une fois sur: p>

runas /user:domain\user "rundll32 c:\Windows\System32\dfshim.dll,ShOpenVerbApplication http://someurl.com/tool.application"


5 commentaires

Cette réponse a sauvé ma vie! J'ai pu utiliser l'astuce décrite pour ouvrir une application ClickOnce entre deux domaines non approuvés à l'aide de l'authentification NTLM.


@Santo deux fois utilisateur ?


@turbanoff Oui Vous devez le faire deux fois, sinon la seconde lancera l'application ClickOnce dans le contexte de l'utilisateur connecté. Est-ce ce que vous demandiez?


@Santo je ne peux pas comprendre: où j'ai besoin de spécifier le nom d'utilisateur et où la chaîne utilisateur


Vous devez le faire à partir d'une ligne de commande (touche Windows + R, type cmd et appuyez sur Entrée), puis entrez les deux commandes, il suffit de remplacer le domaine \ utilisateur dans les deux cas avec le domaine et l'utilisateur que vous essayez d'exécuter en tant que. S'il s'agit d'un utilisateur de la machine locale, utilisez le nom de la machine comme domaine. J'espère que ça aide.