Как указать учетные данные пользователя для приложения с однократным нажатием?

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

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


person Vitalik    schedule 31.08.2010    source источник


Ответы (3)


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

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

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

person RobinDotNet    schedule 01.09.2010
comment
См. ответ ниже, в котором это достигается без жесткого кодирования паролей. Целесообразно это или нет, вопрос не в этом. Я не думаю, что люди будут делать это в обычной работе, но иногда это необходимо для тестирования опыта других пользователей в среде разработки. - person Stephen Holt; 19.09.2018

Это на самом деле возможно, вам просто нужно сделать это в два этапа. Сначала вам нужно запустить 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 только один раз, если вам нужно запустить несколько приложений, и он исчезнет через некоторое время, как только вы закроете все свои олицетворенные приложения, щелкающие один раз.

person Alan    schedule 16.08.2012
comment
Этот ответ спас мне жизнь! Я смог использовать описанный прием, чтобы открыть приложение ClickOnce между двумя ненадежными доменами с использованием проверки подлинности NTLM. - person Louie Bao; 02.08.2013
comment
@Санто два раза user ? - person turbanoff; 08.08.2014
comment
@turbanoff да, вам нужно сделать это дважды, иначе второй запустит приложение clickonce в контексте вошедшего в систему пользователя. Это то, что вы спрашивали? - person Alan; 12.08.2014
comment
@Santo Не могу понять: где нужно указать имя пользователя, а где строка user - person turbanoff; 12.08.2014
comment
Вам нужно сделать это из командной строки (клавиша Windows + R, введите cmd и нажмите Enter) и введите обе команды, просто замените домен\пользователь в обоих случаях на домен и пользователя, под которым вы пытаетесь запустить. Если это пользователь с локальной машины, то используйте имя машины в качестве домена. Надеюсь, это поможет. - person Alan; 22.08.2014

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

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

person Serapth    schedule 31.08.2010
comment
Знаете ли вы, может ли местоположение приложения измениться после автоматического обновления? - person Vitalik; 01.09.2010
comment
Что я действительно пытаюсь сделать, так это запустить однократный клик под учетной записью домена с компьютера, который не является частью домена (но находится в той же сети). - person Vitalik; 01.09.2010
comment
Я не верю, что вы можете полагаться на то, что путь останется последовательным, нет. - person Serapth; 01.09.2010
comment
Как вы развертываете приложение clickOnce? FileShare или IIS размещены? Если IIS, проверьте это. На самом деле, проверьте это в любом случае. Вы должны иметь возможность получить, передав логин через URL. Например, (someserver/SomeClickOnceApp.application?username=Joe&password=CORocks) msdn .microsoft.com/en-us/library/aa480721.aspx#adminc_topic5 - person Serapth; 01.09.2010
comment
Также я предполагаю, что оба подхода не будут выполнять автоматическое обновление, так как я иду напрямую против .exe. - person Vitalik; 02.09.2010