Назад | Перейти на главную страницу

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

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

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

и я получаю

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

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

Используя того же пользователя при входе в систему непосредственно на машине, я могу без проблем запрашивать, запускать или останавливать эту «службу лицензирования 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 и работы от имени администратора, и поскольку я могу удаленно запрашивать другие службы, я думаю, что моя проблема должна быть немного другой. Включение ссылок заставляет бота думать, что это спам, поэтому просто ищите по заголовкам.

Благодаря 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 команда.