Silverlight "Приложение вне браузера" и "Установить со страницы" - PullRequest
2 голосов
/ 23 декабря 2010

Я работал над интеграцией некоторых элементов управления, которые вызывают COM-классы, в клиент Silverlight. Поскольку мои элементы управления используют COM, они работают только вне браузера. У клиента не включены параметры установки из браузера, и когда я запускаю клиент из Visual Studio, я могу щелкнуть его правой кнопкой мыши и установить на рабочий стол. Кажется, что все работает нормально. Странно то, что мои элементы управления не работают, когда они не работают в браузере - я получаю сообщение об ошибке, что COM-сервер не может быть запущен.

Незнакомая часть заключается в том, что если я захожу в свойства клиента и устанавливаю для параметра «Действие запуска» из «Динамически создать тестовую страницу» значение «Из приложения браузера», мои элементы управления работают нормально, и я не получаю ошибок COM. Так что, думаю, я не понимаю разницы между установкой приложения на рабочий стол через меню, вызываемое правой кнопкой мыши, и настройкой запуска приложения как приложения вне браузера. Есть идеи, что здесь происходит?

Редактировать

Похоже, это может быть связано именно с отладкой. Если (в Visual Studio) я выберу Отладка-> Начать отладку, мой код COM работает. Если я выберу Отладка-> Начать без отладки, это не сработает. Он также не работает, если установлен непосредственно из файла XAP.

1 Ответ

1 голос
/ 27 января 2011

Это оказалось проблемой высоты. Процесс COM, к которому я пытался получить доступ, работал с повышенными правами, и я также пытался запустить приложение SL с повышенными правами. Тем не менее, sllauncher.exe запускается с повышенными правами, а затем сразу же сбрасывает свое повышенное состояние и становится не повышенным. Таким образом, у нас был процесс без повышенных прав, пытающийся говорить с повышенным процессом, который, конечно, потерпит неудачу. Visual Studio был повышен, поэтому запуск приложения оттуда держал его повышенным, поэтому он работал оттуда.

Я решил эту проблему, убедившись, что повышение прав совпало в моих двух приложениях - не запуская процесс COM с повышенными правами.

...