Приложение My (.NET) позволяет пользователям настраивать значения базы данных. Затем они должны будут генерировать отчеты на основе своих изменений, либо Crystal, либо Reporting Services, но это не важно - важно то, что генерация определенно не сможет произойти в их локальном окне, например у них может не быть Crystal Reports (или чего-либо еще), установленного на их компьютере.
Итак, я настроил очередь сообщений на сетевом компьютере (который может генерировать отчеты), и мое приложение будет публиковать в этой очереди сообщение, отправляющее объект вместе со всей необходимой информацией. Все идет нормально.
Я настроил целевую очередь с помощью правила и триггера, чтобы любое новое сообщение автоматически вызывало консольное приложение на этом удаленном компьютере, чтобы попытаться обработать сообщение.
Проблема в том, что, хотя все работает нормально, запущенное консольное приложение работает как учетная запись локального компьютера. Приложение должно взаимодействовать с базой данных (которая использует встроенную аутентификацию).
Консольное приложение отлично работает, когда я запускаю его как действительный пользователь, но не при запуске из очереди сообщений.
Вопрос в том, можно ли настроить правило, триггер или консольное приложение для запуска от имени определенного пользователя? Я перепробовал все параметры конфигурации, которые я могу видеть, но безрезультатно.
Может быть, я могу выдать себя за пользователя в самом коде приложения (в app.config)? Это возможно в ASP.NET коде, но не в коде WinForms.
Редактировать: Предложение подражания работает хорошо ... вплоть до того момента, когда я получаю ошибку "Доступ запрещен" из функции Process.Start (), вызывающей startwithcreateprocess ().
Пользователь, которого я олицетворяю, имеет разрешение на запуск процесса на локальном компьютере (поэтому он может работать без проблем).