Определите, имеет ли процесс SQLSERVR доступ на запись в данную папку (C #) - PullRequest
0 голосов
/ 08 декабря 2010

У меня есть приложение winforms, которое использует серверную часть SQL Express (которая всегда находится на локальной машине). Я столкнулся с множеством проблем пользователей, когда пользователь выполняет задачу, которая создает новую базу данных в определенном месте, но оказывается, что «NT Authority \ Network Service» не имеет достаточных разрешений в указанном месте.

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

У меня запущен код WMI для определения пользователя / SID процесса SQLSERVR. Мой следующий шаг - попытаться получить WindowsIdentity / WindowsPrincipal пользователя, чтобы я мог запросить правила доступа к файлу.

Но я застрял - как я могу надежно получить WindowsIdentity, когда у меня есть только пользователь / домен / SID? Не похоже, что есть конструктор, который подходит для этого?

Ответы [ 2 ]

1 голос
/ 08 декабря 2010

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

Спросите себя, стоит ли это хлопот.Может быть, предупреждение желательно, но вы ничего не можете сделать сами, чтобы решить проблему.Это потребует администратора, чтобы действительно решить проблему.Сосредоточьтесь на получении хорошей диагностики из исключения, которое вы получаете.

0 голосов
/ 08 декабря 2010

Могу ли я предложить вам другой (более простой) подход?Попробуйте просто выдать себя за службу / учетную запись пользователя и написать быстрый временный файл, а затем удалите его.Если вы можете записать этот файл (и удалить его), вы можете быть уверены, что SQL Server может сделать то же самое.

Вот пост, в котором говорится о олицетворении учетной записи NETWORK SERVICE: http://geek.hubkey.com/2008/02/impersonating-built-in-service-account.html

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