Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 21:20   #1
pro2011
Новичок
Джуниор
 
Регистрация: 17.01.2011
Сообщений: 4
По умолчанию Как организовать обмен информацией между программой и собственной службой (сервисом)

Подскажите, как организовать передачу своих команд, (а не стандартных запросов к службе), чтобы собственная служба выполнила нужную операцию по запросу программы, например, запись определённого ключа в ветку регистра HKLM (HKEY_LOCAL_MACHINE)?
-----------------------------------------------------
Это для проги, которой нужны права администратора, если она запускается из под учётной записи стандартного пользователя.
Если к проге "прицепить" манифест, то при каждом запуске она будет просить пароль админа. Это не приемлемо.
Поэтому, лучше создать службу, для выполнения "запрещённых" для стандартного пользователя операций. Установить её вместе с программой.
Программа отсылает запрос службе, а та должна выполнить запрошенную операцию, т.к. она сама выполняется от имени системы(Local System).
Саму службу написать несложно, а вот как обеспечить обмен информацией, передачу данных службе?
Подскажите приемлемый механизм. Хорошо бы ссылку на небольшой пример на эту реализацию.

Последний раз редактировалось pro2011; 17.01.2011 в 22:11.
pro2011 вне форума Ответить с цитированием
Старый 17.01.2011, 22:12   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Выбирайте любой механизм IPC и вперёд.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 17.01.2011, 23:42   #3
pro2011
Новичок
Джуниор
 
Регистрация: 17.01.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Выбирайте любой механизм IPC и вперёд.
Спасибо за отклик. На счёт любой...
Вот в этом и вопрос. Очень странно, но я никак не могу найти пример в инете, который послужил бы "путеводной звездой".
Одни говорят, что надо использовать Sockets for IPC. Но в той же MSDN
"Named pipes and COM are probably the best for local IPC".
Программирование в COM - дело сложное. Опять же, нет примеров(с точки зрения моей проблемы).
Может кто-нить подкинет хоть какой пример? Ведь у меня не необычная задача. Наверняка у кого то уже есть такие наработки.
Буду очень признателен.
pro2011 вне форума Ответить с цитированием
Старый 18.01.2011, 00:40   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Примеры.

(хоть бы сказали какого вы пола... эээ... т.е. какой язык)
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 18.01.2011, 02:42   #5
pro2011
Новичок
Джуниор
 
Регистрация: 17.01.2011
Сообщений: 4
По умолчанию

Всё таки методом "Named Pipes".
Я тоже склонялся к этому способу. За примеры, отдельное спасибо. Буду изучать.
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Цитата:
хоть бы сказали какой язык
Delphi. Object Pascal.
P.S. Посмотрел, вы тоже пишете на Delphi
Судя по всему, вы очень отзывчивый, да к тому же ещё и толковый программист! Я программирую давно, с использованием СУБД. А эта тема для меня абсолютно новая... Может будут "непонятки". Можно будет к Вам лично обратиться?
Не бросайте в беде единомышленника...

Последний раз редактировалось pro2011; 18.01.2011 в 03:02.
pro2011 вне форума Ответить с цитированием
Старый 18.01.2011, 14:36   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Можно .
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 18.01.2011, 15:41   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

можно конечно и заглушками, но никто не мешает использовать и механизм сообщений, пример в блоге.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 18.01.2011, 16:00   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Смотря какими сообщениями.

Ежели ControlService - это можно.

Ежели оконными - кто ж вам даст сообщения между рабочими столами отправлять.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 20.01.2011, 04:11   #9
pro2011
Новичок
Джуниор
 
Регистрация: 17.01.2011
Сообщений: 4
Подмигивание

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Можно .
Всё оказалось намного проще.
Тестируйте под правами стандартного юзера. UAC должен быть включён, как это и делается для станд.юзера.
Примечание: 1 раз запросит пароль админа.
а) если пароля у админа нет, то просто "Ввод"(Enter).
б) если есть, то вы просите админа его ввести 1 раз(сами не подсматриваете)
ссылка здесь
Если заинтересует, выложу исходники и напишу реализацию идеи.

Последний раз редактировалось pro2011; 20.01.2011 в 04:28.
pro2011 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
организовать взаимодействие между формами, как? lexluter1988 Общие вопросы .NET 1 21.05.2010 06:49
Обмен данными между DLL и программой Шульц Общие вопросы Delphi 8 16.03.2010 22:34
Обмен информацией W0LF Общие вопросы Delphi 2 01.01.2010 22:57
как реализовать обмен данными между программами Андрей.12 Работа с сетью в Delphi 1 26.11.2009 08:06
Как организовать вывод сообщений программой в VCL режиме Delphi? Evgenii Помощь студентам 10 28.07.2008 11:28