Как проверить функциональность только администратора? - PullRequest
1 голос
/ 26 сентября 2011

Конструкция моего приложения заключается в том, что сначала выполняются стандартные пользовательские операции (и выдают интересующую информацию, даже если пользователь не может продолжить), а затем, при необходимости, предлагается внести некоторые системные изменения соответственно, что требует повышения прав.Если пользователь решает продолжить, программа перезапускается, требуя повышения прав с помощью переключателя командной строки, который сообщает ему, где в рабочем процессе возобновить работу.Затем новый процесс выбирает то, где остановился старый, и вносит изменения, запрошенные пользователем.

Моя проблема в том, что я не знаю, как написать модульные тесты для методов библиотеки, которые обязательно делают привилегированные вызовы беззапуск всей Visual Studio от имени администратора.Я действительно хотел бы избежать этого, поэтому я в порядке с системой, запрашивающей у меня учетные данные для запуска некоторых или всех моих модульных тестов.Но в настоящее время, будучи обычным пользователем, вызовы просто терпят неудачу с исключением «System.Management.ManagementException: доступ запрещен».

Есть какие-либо идеи или опыт обработки этого, помимо повышения всей Visual Studio для сеанса?Поскольку я использую встроенные модульные тесты, в идеале решение будет отображать результаты каждого теста в окне результатов теста, но это не является обязательным требованием.

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

Вы можете олицетворять учетную запись администратора, используя LogonUser ().

Посмотрите на этот блог, который пытается решить вашу проблему .

Мне понравилась реализация codeproject для лучшего вызова LogonUser. На самом деле есть много примеров кода проекта LogonUser (), если вы будете немного искать.

0 голосов
/ 26 сентября 2011

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

Таким образом вы можете убедиться, что выполняются правильные вызовы с правильными параметрами, но вы не меняете состояние системы.

...