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

У меня есть текущее приложение silverlight, которое работает в окне браузера asp.net, как часть нашего сайта в интрасети.

Мне действительно нужно иметь имя пользователя из системы, на котором зарегистрирован.

У меня есть тестовая система, работающая как OOB, которая выполнит необходимые действия для получения имени пользователя из системы.

У меня такой вопрос: может ли приложение OOB silverlight по-прежнему находиться на странице интрасети, как это было, если оно не было помечено как приложение OOB?

спасибо Тони

2 ответа

В Silverlight 4 OOB вы можете использовать AutomationFactory, когда приложение работает с повышенными разрешениями.

var username = "";
if (App.Current.HasElevatedPermissions)
    using (dynamic shellObj = AutomationFactory.CreateObject("WScript.Network"))
        userName = shellObj.UserName;

Обратите внимание, что вам нужно ссылку

  • Microsoft.CSharp.dll и
  • System.Core.dll

Узнайте больше на эту тему в блоге Джастина Энджелса

Если вы развертываете приложение Silverlight 4, оно должно быть запущено из браузера, поскольку песочница внутри браузера не разрешает ElevatedPermissions. Если вы решили использовать Silverlight 5, вы можете включить ElevatedPermissions с учетной записью администратора для приложений в браузере (msdn.microsoft.com/en-us/library/ee721083(v=vs.95).aspx).

Хотя вы, конечно, можете запускать приложение внутри интранет-страницы, оно не имеет повышенных разрешений, если вы (или пользователь) не устанавливаете и не запускаете его OOB. Таким образом, приложение не сможет получить доступ к имени пользователя. Кажется, что это ограничение частично снято с Silverlight 5, но я еще не проверял это, и не могу сказать вам, можете ли вы пойти по пути, описанному выше.

Я могу только догадываться, как вы собираетесь использовать имя пользователя, но если вы планируете использовать его для аутентификации или авторизации, вам следует провести немного больше исследований.

Если вы хотите действительно аутентифицировать пользователя, сервер должен быть тем, кто это сделает. Например: запрос имени пользователя и пароля, проверка подлинности Windows и т. д. Имя пользователя (и даже домен), работающее на ПК, не следует доверять, чтобы быть правильным.

Другие вопросы по тегам