Показать полную графическую версию : Внести изменение в реестре службой, для текущего пользователя.
zombivadim
27-04-2016, 23:34
Создаю службу командой
Sc create MyService binPath= C:\Test.exe DisplayName= "NewService" type= own start= auto
, в исполняемом файле всего одна строчка, reg add ...., расчет был на то, что при каждом старте, будет перезапись реестра на случай его изменения. Однако это не срабатывает. Как мне объяснили, служба создает запись в реестр для пользователя localsystem, помогите пожалуйста.
Необходимо чтобы запись в реестре, произошла для текущего пользователя.
Foreigner
27-04-2016, 23:44
zombivadim, А само приложение может работать в качестве сервиса? Оно для этого предназначено?
Если нет, то смотрите в сторону сервисных оболочек (NSSM, instsrv, srvany)
zombivadim
27-04-2016, 23:55
Foreigner, Если вы про Test.exe, то это обычный BAT переконвертированный в .exe, с одной строчкой reg add ...
Foreigner
27-04-2016, 23:59
zombivadim, Он самостоятельно не может быть запущен в качестве службы.
zombivadim
28-04-2016, 00:06
Foreigner, Простите, если добавить в файл к примеру команду COPY %0 D:\, то все работает, а вот с реестром проблема.
Foreigner
28-04-2016, 00:15
Работает в качестве службы?? Покажите скриншот:
sc query NewService
tasklist | findstr /i "test.exe"
zombivadim
28-04-2016, 00:38
Foreigner,Не sc query NewService,а MyService , все работает, при перезагрузке файл создается COPY %0 D:\,
zombivadim
28-04-2016, 00:39
136338
Foreigner, Даже пусть по вашему, вы мне подскажите как реализовать задуманное!
Foreigner
28-04-2016, 01:05
zombivadim, Служба если запушена постоянно висит в процессах. Запускается либо автоматически, либо по требованию (событию или другим приложением), либо вручную. Не совсем понятна задача. Может вам проще положить батник в автозагрузку (Для 10-ки, в 7-ке не помню):
%AppData%\Microsoft\Windows\Start Menu\Programs\StartUp
Или в реестре:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run -- для пользователя
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run -- для всех пользователей
zombivadim
28-04-2016, 10:31
Необходимо создать службу, с возможностью изменять запись в реестре для текущего пользователя. Для этого я и пришел на форум, а не сделал простопроще положить батник в автозагрузку »
Foreigner
28-04-2016, 12:22
zombivadim, Объясните, почему именно служба? Для чего вам в реальном времени выполнять код?
По поводу того, как создать службу из батника, ведь упаковщик батников в exe, это просто архив, который распаковывается в %temp% и от туда исполняется, так вот, насчет запуска в виде службы я написал выше, смотрите в сторону приложений, которые являются прослойкой между сервисами и исполняемым приложением
Foreigner: смотрите в сторону сервисных оболочек (NSSM, instsrv, srvany)
Из википедии:
Приложение, имеющее статус службы, должно быть написано таким образом, чтобы оно могло принимать сообщения от SCM (Service Control Manager). Затем имя службы и её другие атрибуты, например, описание службы, регистрируются в диспетчере управления при помощи одного или нескольких вызовов API.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.