2014-01-14 3 views
2

Я тестирую небольшую служебную программу. Он ведет себя по-разному в зависимости от того, выполняется ли он с правами администратора или нет. Поэтому моя тестовая среда должна вызывать программу как с правами администратора, так и без нее, чтобы убедиться, что она ведет себя правильно.Запуск внешнего двоичного кода как другого пользователя

Тестирование основы написано на C#. Наш CI-сервер будет проходить тест в полночь каждый день, так что это неплохие высказывания о подтверждении доступа или аналогичные данные; там не будет человека, чтобы нажать кнопку или ввести учетные данные. Я предпочел бы избежать необходимости хранить пароль администратора, если это возможно.

С чего начать? Похоже, ProcessStartInfo может принимать имя пользователя, домен и пароль, но для этого требуется, чтобы пароль администратора был скомпилирован в тестовую среду. (Как , что будет работать на более чем одном компьютере!) Я также видел ответы, которые говорят что-то о WindowsIdentity и олицетворении - но это похоже на изменение идентификатора пользователя текущего процесса, а не внешнего процесса, который Я пытаюсь вызвать.

+1

можно хранить пароль в ваш инструмент CI и оттуда передайте его на тестирование и используйте в ProcessStartInfo, например в TeamCity 7 есть параметр [пароль] (http://confluence.jetbrains.com/display/TCD7/Typed+Parameters) – TomT

ответ

1

Что об этом:

  • Вашего тесте рамка ожидает, имя пользователя/пароль для прав администратора с помощью командной строки параметров
  • сервера CI называет это с параметрами - по крайней мере, вы должны хранить пароль. Любое неинтерактивное решение требует хранения пароля где-то
  • В тестовой среде появится приложение, а затем ProcessStartInfo.

По крайней мере, пароль не хранится в коде больше, что делает его лучше управлять и не просачиваться его за пределы Admin's объема;)

BR Флориан

Смежные вопросы