Почему я не могу удалить файл в% ProgramFiles% из модульного теста с помощью Resharper's Test Runner Unit Test? - PullRequest
2 голосов
/ 19 сентября 2008

Я пытаюсь написать тест, который в программе «Установки приборов» создает резервную копию файла и удаляет оригинал, запускает тест без оригинального подарка, а затем в процессе восстановления восстанавливает оригинал из резервной копии. Файл находится в моей папке% ProgramFiles%. Я получаю исключение UnauthorizedAccessException в операторе fileInfo.Delete (). У меня нет проблем с удалением этого файла из другого тестового проекта на том же компьютере, который не запущен из Resharper Test Runner.

Я не могу переместить файл куда-нибудь еще - это ssapi.dll, установленная dll для Visual SourceSafe. (Да, я делаю что-то агрессивное в модульном тесте.)

Это один и тот же пользователь (я) в обоих направлениях - я проверил это через диспетчер задач. Моя учетная запись пользователя является членом локальной группы администраторов. Какие еще факторы влияют на мою «авторизацию» на выполнение каких-либо действий с файлом?

РАЗРЕШЕНО: Хотя он не отвечает на мой первоначальный вопрос (на который я все еще хотел бы знать ответ), я нашел обходной путь для моих целей тестирования, используя System.Security.Permissions framewok, выполняя требование для FileIOPermissionAccess.Read в коде приложения (не тестовом), для которого требуется файл (для вызова Interop), и для его запрета в тесте этого кода, который требует сценария, что этот файл отсутствует. Пока это должно работать (и мне нравится немного узнать о пространстве имен System.Security.Permissions)!

Ответы [ 5 ]

1 голос
/ 19 сентября 2008

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

Возможно, вы могли бы подумать об изменении каталога на% AppData% (вам может потребоваться сделать это изменение и для вашего основного приложения).

Это может решить вашу проблему, а также увидит вас хорошо при переходе на Vista, поскольку UAC может помешать вам (или пользователю приложения) использовать каталог% ProgramFiles%.

0 голосов
/ 16 октября 2008

Вы используете Vista или Server 2008 с включенным UAC? Если да, то это может быть причиной - процесс запуска теста может не находиться в режиме с повышенными правами.

0 голосов
/ 15 октября 2008

Вы можете активировать аудит для файла и проверить сообщение об ошибке в журнале событий. Обратите внимание, что вы должны включить аудит в двух местах: один раз в разделе «Локальная политика безопасности / Локальные политики / Политика аудита» и один раз для самого файла. Это не решит проблему, но, по крайней мере, поможет диагностировать проблему.

0 голосов
/ 19 сентября 2008

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

Перейдите к папке в проводнике Windows. Щелкните правой кнопкой мыши на папке и выберите свойства. Выберите вкладку безопасности, затем кнопку «Редактировать» и добавьте полный контроль для себя. Да - я полагаю, это потенциальная проблема безопасности, но вам нужно изменить файлы в этом каталоге, и вы, похоже, знаете, что делаете, поэтому оно должно работать.

0 голосов
/ 19 сентября 2008

Возможно, что ReSharper запускает свой Run Runner как отдельный процесс, и этот отдельный процесс не использует вашу учетную запись Windows, а вместо этого другой с более низкими привилегиями.

Возможно, вы сможете проверить это открытие диспетчера задач и отметку Показать процессы всех пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...