Невозможно получить доступ к локальному фиксированному диску из службы

Я испытываю следующее странное поведение:

Служба C# не может выполнить какие-либо операции на локальном диске D: (например, проверить, существует ли каталог), в то время как консольная версия, обертывающая ту же сборку, не имеет никаких проблем. Оба работают под одной и той же учетной записью пользователя, которая является членом локальной группы администраторов. При интерактивном входе в систему у этого же пользователя также нет проблем с доступом к диску D: \ с помощью проводника Windows.

Вставка следующего диагностического кода:

        DriveInfo[] drives = DriveInfo.GetDrives();
        foreach (DriveInfo drive in drives)
        {
            string label = drive.IsReady ? String.Format(" - {0}", drive.VolumeLabel) : " - drive not ready";
            string driveMessage = string.Format("Drive {0} - {1}{2}", drive.Name, drive.DriveType, label);
            EventLog.WriteEntry("NxG SiteService", driveMessage, EventLogEntryType.Information);
        }

показывает, что диск D: является фиксированным диском, который "не готов"?

Может кто-нибудь объяснить мне, почему фиксированный диск может быть «не готов» при доступе из службы?

Среда: Windows 2012 Server, работающая на хосте VMWare ESXi v. 5.5.0


person PDHCoder    schedule 14.04.2014    source источник
comment
Возможно, «опросить» его, пока он не будет готов? Возможно, он привязан к какому-то хранилищу SAN, и для ответа требуется несколько секунд.   -  person leppie    schedule 14.04.2014
comment
Пробовали отложенный запуск службы? Возможно, служба просто должна начаться позже. Или Служба также показывает такое поведение, если вы запускаете ее вручную?   -  person M C    schedule 14.04.2014
comment
@M C - служба также отображает такое поведение при запуске вручную.   -  person PDHCoder    schedule 14.04.2014
comment
Пробовали ли вы запускать службу под выделенной учетной записью пользователя? Насколько я знаю, запускать Службы под учетной записью «реального» пользователя — плохая практика. Также проверьте разрешения NTFS.   -  person M C    schedule 14.04.2014
comment
@M C - я пробовал с разными учетными записями пользователей, включая учетную запись домена, которая принадлежит к локальной группе администраторов, и с учетной записью локального администратора ... безрезультатно. Разрешения NTFS должны быть в порядке, поскольку один и тот же пользователь может получить к нему доступ из сеанса рабочего стола. В любом случае, я сделал учетную запись пользователя, запускающую службу, владельцем корневого каталога (+ распространение на все файлы и подкаталоги), но безуспешно.   -  person PDHCoder    schedule 14.04.2014


Ответы (1)


Мы нашли причину и решение: http://social.technet.microsoft.com/Forums/windowsserver/en-US/179c72b2-2957-43a0-8798-472e907a6e55/access-denied-issue-with-server-2012-only-on-secondary-drive-not-c

person PDHCoder    schedule 15.04.2014
comment
Пожалуйста, добавьте решение, а не просто ссылку на ваш ответ. - person flayn; 15.04.2014