none
Минимальные права на доступ к информации о владельце процесса по WMI RRS feed

  • Вопрос

  • Задача:
    Надо получить список процессов с заданным именем, работающих в контексте пользователя с указанным именем.
    Решение:
    Делаем WQL запрос, получаем список процессов и вызываем у каждого GetOwner.
    Проблема:
    Все прекрасно работает с админскими правами, а вот без них GetOwner возвращает ResultCode = 2 (Access Denied).
    Вопрос:
    Какие у пользователя должны быть права, чтобы успешно вызвался WIN32_Process.GetOwner?
    18 июня 2009 г. 4:56

Ответы

  • Если вы добавили привилегию Debug, то:
    Если вы делаете запрос из PowerShell через Get-WmiObject  то установите ключ -EnableAllPrivileges
    Если другими средствами, то пишите как-то так winmgmts:{impersonationLevel=impersonate,(debug)}!root\cimv2
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    24 июня 2009 г. 12:22
    Модератор

Все ответы

  • Вы читаете свойства объекта (процесса) - следовательно вам надо иметь права на этот объект для чтения его свойств.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    18 июня 2009 г. 9:00
    Модератор
  • Вы читаете свойства объекта (процесса) - следовательно вам надо иметь права на этот объект для чтения его свойств.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/

    Без прав администратора я могу у любого процесса получить такие свойства как его имя, хендл и т.п., следовательно права на получение этих свойств есть. А вот владельца какого угодно процесса получить не могу, следовательно я предполагаю, что в политике безопасности можно назначить какие-то права, позволяющие пользователю делать это.
    Потому и хотелось бы узнать какие именно права влияют на то, может пользователь получить информацию о владельце любого процесса или нет.


    18 июня 2009 г. 9:32
  • Я не совсем точно новерное написал. Точнее так:
    Вы читаете (GetOwner) свойства безопасности объекта (процесса) - следовательно вам надо иметь права на чтение свойств безопасности.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    18 июня 2009 г. 9:56
    Модератор
  • Я не совсем точно новерное написал. Точнее так:
    Вы читаете (GetOwner ) свойства безопасности объекта (процесса) - следовательно вам надо иметь права на чтение свойств безопасности.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    Не подскажете более точное название этих прав?
    Честно говоря в локальных политиках безопасности не нашел ничего с этим связанного.
    18 июня 2009 г. 12:17
  • Я не понимаю, зачем вам что-то менять в безопасности процессов.

    Процессы порождают дочерние процессы и назначают им дескриптор безопасности. Получается дерево процессов. Если десприптор безопасности позволяет, то другой процесс может иметь доступ к этому процессу и его свойствам, если нет, то нет. Пользователь тоже сидит где-то в этом дереве процессов и имеет права на порожденные им процессы. Но даже администратор не имеет полных прав на все процессы (например, системные).
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    18 июня 2009 г. 12:35
    Модератор
  • Я не понимаю, зачем вам что-то менять в безопасности процессов.

    Процессы порождают дочерние процессы и назначают им дескриптор безопасности. Получается дерево процессов. Если десприптор безопасности позволяет, то другой процесс может иметь доступ к этому процессу и его свойствам, если нет, то нет. Пользователь тоже сидит где-то в этом дереве процессов и имеет права на порожденные им процессы. Но даже администратор не имеет полных прав на все процессы (например, системные).
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    Смотрите:
    Есть некий процесс, который например запущен от имени пользователя VasyaPupkin.
    У нас висит служба, запущенная от имени PetyaVasechkin, в задачи которой входит считать количество процессов с определенным именем, запущенных от имени пользователя VasyaPupkin.
    Если добавить пользователя PetyaVasechkin в группу администраторов, то служба без проблем получает количество процессов, но давать ей такие большие права не очень хорошо.
    Следовательно надо узнать, какие конкретно надо дать права пользователю PetyaVasechkin, чтобы служба, запущенная от его имени - могла выполнить свою задачу.

    19 июня 2009 г. 11:34
  • Самое простое это дать право Debug programs в локальной политике нужной учетке.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    22 июня 2009 г. 10:23
    Модератор
  • Не помогло. Есть более сложные варианты?
    23 июня 2009 г. 4:55
  • Если вы добавили привилегию Debug, то:
    Если вы делаете запрос из PowerShell через Get-WmiObject  то установите ключ -EnableAllPrivileges
    Если другими средствами, то пишите как-то так winmgmts:{impersonationLevel=impersonate,(debug)}!root\cimv2
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    24 июня 2009 г. 12:22
    Модератор
  • Тестирую при помощи wbemtest.exe, запуская от имени нужного пользователя, там ставлю "Enable All Privileges".
    Потом соответственно Execute Method
    25 июня 2009 г. 7:45
  • А как делаете?
    Вот пример http://www.servernewsgroups.net/group/microsoft.public.windows.server.scripting/topic4443.aspx
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    26 июня 2009 г. 10:21
    Модератор