Это исправление больше не работает после CTP5.
Вы должны сделать Database.SetInitializer<YourContext>(null);
Можно использовать ProcessStartInfo, который позволяет Вам указывать учетные данные. Прием - то, что пароль является безопасной строкой, таким образом, необходимо передать его как массив байтов.
Код мог бы посмотреть что-то как:
Dim startInfo As New ProcessStartInfo(programName)
With startInfo
.Domain = "test.local"
.WorkingDirectory = My.Application.Info.DirectoryPath
.UserName = "testuser"
Dim pwd As New Security.SecureString
For Each c As Char In "password"
pwd.AppendChar(c)
Next
.Password = pwd
'If you provide a value for the Password property, the UseShellExecute property must be false, or an InvalidOperationException will be thrown when the Process..::.Start(ProcessStartInfo) method is called.
.UseShellExecute = False
.WindowStyle = ProcessWindowStyle.Hidden
End With
Не уверенный, если это - это, но у меня была связанная проблема, и ответ был то, что учетная запись не имела разрешения явиться олицетворением на машине. Это может быть изменено путем добавления, что учетная запись к политике "Исполняет роль клиента после аутентификации" использование локального менеджера политики на машине.
Я пошел другим путем и поместил целое приложение в его собственный пул приложений, работающий как пользователь, которого мы первоначально исполняли роль. Теперь, когда asp.net порождает новый процесс, он мечет икру под контекстом пользователя вместо aspnet_wp. Не точное решение проблемы, которую я отправил, но это работало на нашу ситуацию.
Я столкнулся с той же проблемой, которую Вы сделали на проекте. Должен быть способ породить процесс из Вашего веб-приложения с данными учетными данными, но на практике, это - клудж в лучшем случае Что я волновал, окончательное выполнение просто имело информацию о нажатии приложения к MSMQ и имело сервис окон, который вытолкал объекты Очереди обслуживаемый запросы.
Даже когда Вы, которых appliation исполняет роль, это все еще, хотите работать под theaspnet учетной записью пользователя.
Я хотел упомянуть, что я попробовал код на этом сайте включая обновленный код, упомянутый в комментариях. Этот код выполняет процесс как явленные олицетворением идентификационные данные (который является действительно всем, в чем я нуждаюсь), но перенаправление сбоев стандартной погрешности - так эта ссылка могло быть полезно для не обеспокоенных контактом с stderr.
Проверьте уровень Безопасности доступа к коду, в то время как Процесс требует Full Trust
. Ваше веб-приложение может работать в частичной доверительной установке.
От страницы Process MSDN:
Полномочия
* LinkDemand
для полного доверия для непосредственной вызывающей стороны. Этот класс не может использоваться частично доверяемым кодом.
* InheritanceDemand
для полного доверия для наследников. Этот класс не может быть наследован частично доверяемым кодом.