Windows API StartService ... имя локализованной службы - PullRequest
1 голос
/ 31 марта 2011

Я хочу запустить службу Volume Shadow Copy с помощью программы на C ++.Это включает получение дескриптора диспетчера управления службами ( OpenSCManager ), используя его для получения дескриптора службы ( OpenService ) и затем запуска службы ( StartService ).

Однако я должен передать имя службы в виде строки в функцию OpenService.Служба VSS называется Volumeschattenkopie в моей немецкой Windows Vista.Есть ли способ запустить правильный сервис на любом языке?Я раньше не использовал строки ресурсов, но можно ли получить имена служб с помощью FindStringResourceEx или что-то в этом роде?

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

Вы абсолютно уверены, что Volumeschattenkopie - это название сервиса в немецкой Vista?Это определенно отображаемое имя службы, но OpenService ищет имя, которое использовалось во время CreateService, которое может быть не локализовано.Чтобы найти исходное имя службы, перейдите в панель управления службами, откройте свойства интересующей вас службы. Она написана прямо в верхней части.На моей английской коробке win7 имя службы Volume Shadow Copy - VSS.

0 голосов
/ 16 апреля 2015

У меня была такая же проблема с получением локализованных имен для встроенных учетных записей Windows, таких как «NT AUTHORITY \ NETWORK SERVICE» или «NT AUTHORITY \ SYSTEM». Разница лишь в том, что я использую C # в этом случае. Однако я думаю, что это не должно быть проблемой для перехода на C ++ (с использованием неуправляемого или управляемого C ++?)

Вот как я получаю локализованную NT NTHORITY \ NETWORK SERVICE на локальном компьютере:

SecurityIdentifier userIdentifer = new SecurityIdentifier(WellKnownSidType.NetworkServiceSid, null);
string accountName = userIdentifer.Translate(typeof(NTAccount)).Value;

А если мне нужно NT NTHORITY \ SYSTEM, тогда я просто использую другой Sid:

SecurityIdentifier userIdentifer = new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...