Я работаю над приложением, которое запускается как специальный непривилегированный пользователь. Я хотел бы иметь возможность легко проверить, может ли пользователь прочитать данный файл. Кажется, что это должно быть легко, даже когда я захожу в файл в Windows Explorer и вижу, что разрешение на чтение проверено, иногда кажется, что есть что-то, что мешает пользователю прочитать файл (например, родительский каталог, который пользователь не может просматривать), когда я пытаюсь читать его как пользователя программно.
У пользователя нет разрешения на вход в консоль, поэтому я не могу просто войти как пользователь и попробовать прочитать файл.
Итак ...
Если я хочу знать: «Есть ли у UserBob
доступ к файлу c:\specialPath\specialFile
, какой простой способ это выяснить? Кстати, моя среда - Windows Server 2003.
ОБНОВЛЕНИЕ: Чтобы уточнить, я хочу сделать что-то вроде этого:
if UserHasAccess(UserBob, @"c:\specialPath\specialFile")
{
doStuff();
}
else
{
// error handling
}
UPDATE:
Я получил один ответ, предлагающий мне просто попытаться открыть файл. Проблема в том, что код, открывающий файл, запускается под специальной системной учетной записью и инкапсулируется в другой библиотеке. Поэтому позвольте мне спросить: как я могу сделать так, чтобы мой код, который пытается открыть файл, работал от имени этой специальной системной учетной записи. Предположим, у меня есть доступ администратора к машине, на которой будет выполняться код.