Запрос удаленной службы (запрос sc.exe) завершается с ошибкой «доступ запрещен» для одной службы, но не другие

Я пытаюсь удаленно удалить определенную службу, но получаю известное сообщение" FAILED 5: Access is denied ". Я сократил тестовый пример до запуска

sc \\remotemachine.domain.local query "flexnet licensing service"

и получил

[SC] EnumQueryServicesStatus:OpenService FAILED 5:
Access is denied.

Интересно то, что я могу удаленно запросить практически любую другую службу от того же клиента, и это не проблема. но получите известное сообщение «FAILED 5: Access is denied». сообщение. Я сократил тестовый пример до выполнения

sc \\remotemachine.domain.local query "flexnet licensing service"

и получил

[SC] EnumQueryServicesStatus:OpenService FAILED 5:
Access is denied.

. Интересно то, что я могу удаленно запросить практически любую другую службу от того же клиента, и это не проблема. но получите известное сообщение «FAILED 5: Access is denied». сообщение. Я сократил тестовый пример до выполнения

sc \\remotemachine.domain.local query "flexnet licensing service"

и получил

[SC] EnumQueryServicesStatus:OpenService FAILED 5:
Access is denied.

. Интересно то, что я могу удаленно запросить практически любую другую службу от того же клиента, и это не проблема. Хост-компьютер

  • Отключен UAC
  • Имеет LocalAccountTokenFilterPolicy равным 1

Используя того же пользователя при входе в систему непосредственно на машине, я могу без проблем запрашивать, запускать или останавливать эту «службу лицензирования Flexnet», это Только при попытке сделать это удаленно я сталкиваюсь с проблемой.

Первоначально мы столкнулись с этой проблемой, когда наш деинсталлятор не смог удалить эту службу с помощью Windows C API. Программа удаления будет нормально работать при запуске непосредственно на машине, но при удаленном вызове через WMI она не сработает. Мы постепенно сокращаем тестовый пример, и до сих пор во всех случаях запросы или попытки остановить или удалить эту конкретную службу не удавались при удаленной попытке.

Я также пробовал удаленно вызвать пакетный сценарий, который содержал команды:

powershell.exe -Command "Start-process C:\myDeleteSvc.exe -Verb RunAs"

Где myDeleteSvc. exe - это простая программа, установленная на целевой машине для удаления службы с использованием Windows C API , но она также не удалась при вызове OpenService с отказом в доступе. Опять же, он отлично работает, если запускается непосредственно на машине.

У меня такое случалось со службой, установленной на машинах с Windows 7 и 2008R2 (не тестировал на других платформах).

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

Есть ли у кого-нибудь дальнейшие предложения по исследованию (или решениям)?

Там Это один из случаев, когда службу можно удалить удаленно. Мы поговорили со службой поддержки этого продукта, пытаясь разобраться в проблеме, и пока они Также озадаченные, они предоставили файл msi, который при удаленном запуске удалял рассматриваемую службу. У нас нет доступа к тому сценарию, который использовался для создания этого msi-файла, но нам сказали, что это «очень просто, и все, что он сделал, - это удалил службу». Один из возможных путей исследования - понять, делает ли деинсталляция службы msi что-то «лишнее» при выполнении деинсталляции - кто-нибудь знает?

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

  • «Доступ запрещен» при попытке запустить службу, даже если запущен администратор / повышенный
  • psexec: «Доступ запрещен»?
  • удаленный запрос SC OpenSCManager завершился неудачно 5 доступ запрещен
2
задан 11 March 2016 в 03:46
1 ответ

Благодаря Craig620 проблема действительно была связана с дескриптором безопасности.

C:>sc sdshow "flexnet licensing service"

D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;NU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWRPLOCRRC;;;IU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

C:>sc sdshow myService

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

И из синтаксиса SID видна первая запись ((D;;...;;;; NU)). Отключает большинство разрешений для всего, что поступает по сети (NU). Когда я изменил SD на те же разрешения за вычетом отключения NU, я мог запросить и удалить службу удаленно с помощью команды sc.exe.

.
1
ответ дан 3 December 2019 в 12:42

Теги

Похожие вопросы