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

Проблема в том, что, хотя я запускаю приложение от имени администратора (с минимальными настройками UAC), приложение не имеет достаточных прав ... Я получаю исключения, которые говорят, что доступ запрещен.

Если я пытаюсь вручную удалить папку в проводнике, мне предлагается сделать это от имени администратора, и я нажимаю кнопку продолжить ("fortsetzen" в моей немецкой версии), и она работает нормально, что доказывает, что я / мой логин действительно имеет необходимые права.

Если я использую cmd.exe с del /S /Q C:\User\{user}" он говорит, что доступ запрещен, хотя ...
Что мне нужно сделать, чтобы это работало?
Разве не достаточно быть администратором?

Дополнительная информация:
ОС: Windows 7 Enterprise успешно присоединена к домену samba.
Это все пользователи домена.
Профили пользователей существуют только локально.
Я являюсь членом группы доменов под названием "edv" (немецкий эквивалент "IT")
Эта группа добавляется в локальную группу администраторов клиента, где выполняется мое приложение.

Решено благодаря lzam
гуманный:
Я должен был сделать следующие вещи:

  1. Взять на себя ответственность
  2. Установить права
  3. Удалить флаг защиты от записи
  4. Удали это

Для получения дополнительной информации о том, как сделать это в C #, см. Мой оригинальный пост stackoverflow здесь.

1 ответ1

2

Скорее всего, ваша группа администраторов на самом деле не имеет необходимых разрешений для удаления папки. Когда вы пытаетесь удалить папки через Проводник, он, скорее всего, автоматически изменяет ACL, чтобы дать вам необходимые разрешения для папки, прежде чем она фактически удалит ее.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .