Как указать учетные данные пользователя для приложения, запускаемого одним кликом? - PullRequest
10 голосов
/ 31 августа 2010

Для обычного .exe-файла я всегда могу щелкнуть правой кнопкой мыши и выбрать «запустить как ..». Как можно запустить приложение Click-Once с разными учетными данными аналогичным образом?

Я говорю о самом приложении, а не об установщике.

Ответы [ 3 ]

21 голосов
/ 17 августа 2012

Это на самом деле возможно, вам просто нужно сделать это в два шага.Сначала вам нужно запустить ClickOnce (dfsvc.exe) от имени пользователя, которого вы пытаетесь олицетворять, а затем вы можете запустить приложение развертывания, используя rundll32, что-то вроде этого:

(из командной строки)

1.- Нажмите один раз:

runas /user:domain\user "c:\Windows\Microsoft.NET\Framework\v4.0.30319\dfsvc.exe"

2.- Запустите приложение:

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

Обратите внимание, что вам нужно только один раз запустить dfsvc.exe, если вам нужночтобы запустить несколько приложений, и через некоторое время оно исчезнет, ​​как только вы закроете все свои олицетворенные приложения "один раз".

1 голос
/ 01 сентября 2010

Ответ на самом деле - нет, вы не должны этого делать.Приложения ClickOnce устанавливаются под профилем пользователя и принадлежат только этому пользователю.THey не будет работать и не будет работать как установка для всех пользователей.

Также обратите внимание, что если дважды щелкнуть файл [exe] (расположение которого меняется каждый раз, когда происходит обновление), он будетне искать обновления, он не будет проверять файлы, чтобы убедиться, что они не были подделаны.Другими словами, он не будет работать как приложение ClickOnce.

Я также считаю, что передача имени пользователя и пароля в строке запроса не рекомендуется, поскольку любой, кто запускает fiddler или charles или любой другой анализатор сетевого трафика, сможетчтобы увидеть учетные данные.

1 голос
/ 01 сентября 2010

Вы говорите об одномоментном процессе или о том, что должно происходить каждый раз, когда ваш код запускается на нескольких компьютерах? Потому что, если вы просто хотите лично запустить приложение ClickOnce с повышенными разрешениями, это довольно просто. Нажмите, когда приложения находятся в папке% LOCALAPPDATA% \ Apps \ 2.0 [ObfuscatedFolderName]. Просто найдите папку приложения (метки времени должно быть достаточно), затем щелкните правой кнопкой мыши свой EXE и запустите от имени администратора.

Если вы хотите сделать это в коде, самое простое решение, вероятно, состоит в том, чтобы создать приложение для запуска оболочки вокруг вашего кода, которое запрашивает повышенные разрешения в коде. Вот такой пример.

...