1. Предисловие.

Приветствую всех любителей Delphi! В этой статье я хочу поведать вам об одной из замечательных, с моей точки зрения, технологии, разработанной Microsoft для облегчения нашей жизни. Теперь любой программист, используя любой современный язык программирования (не исключая и скрип языков!) может с лёгкостью узнать о своём компьютере практически всё. Теперь программисты всех "вероисповеданий" могут определить, какое оборудование установлено на их компьютере, узнать информацию о материнской плате и процессоре, параметры БИОСа, какие процессы запущены в данный момент, какова температура процессора и скорость вращения кулера, какие настройки графической системы, какие. Одним словом, все о чём вы так долго мечтали, стало доступно благодаря WMI. Звучит заманчиво, не так ли? Естественно, что WMI - это не только набор параметров. А что это такое - читайте ниже.

 

Функции для создавания и удаления NT Services. Можно создать NT Service от текущее приложение. Параметры:

1. CreateNTService(ExecutablePath,ServiceName: String)

ExecutablePath - Полный путь к изполнимого файла от которого создавается NT Service

ServiceName - Имя сервиза которое отобразится в Service Control Manager

Результат:

true - если операциая завершена успешно

false - если есть ошибка. Можно произвести call то GetLastError чтобы информироваться об естество ошибки

2. DeleteNTService(ServiceName: String):boolean;

ServiceName - имя сервиза подлежающии удаления

Результат:

true - если операциая завершена успешно

false - если есть ошибка. Можно произвести call то GetLastError чтобы информироваться об естество ошибки

TScriptControl компонент должен присутствовать на вкладке вашего ActiveX.

 Запустите новое приложение и перетащите TButton и TScriptControl в основную форму.

 В событии onclick Button1 поместите следующий код:

 

Здесь представлены две функции ServiceStart и ServiceStop, которые показывают, как пользоваться API функциями OpenSCManager, OpenService и т.д.:

Требуется написать управление сервисом, запущеном на другом компьютере. С помошью чего это лучеше сделать? 

 

 

Code:

{ To automatically start a service after its installation use this code }

 

procedure TMyService.ServiceAfterInstall(Sender: TService);

var

sm: TServiceManager;

begin

sm := TServiceManager.Create;

try

   if sm.Connect then

     if sm.OpenServiceConnection(self.name) then

       sm.StartService;

finally

   sm.Free;

end;

end;

 

 

"Совместимость с windows2000 сервер" / "Windows ХР" службы терминалов являются очень важными в компьютерных сетях: каждый клиентский компьютер может эмулировать рабочий стол сервера с помощью простого исполняемого файла названный " mstsc.исполняемый." Этот исполняемый файл использует элемент управления ActiveX "MStscax", определенный в "mstscax.файл DLL." Эти файлы автоматически устанавливаются в Windows XP и Windows Server 2000, но не в ОС Windows 2000 Professional или системе Windows 98. Вы можете скачать весь пакет содержащий

 

После загрузки исполняемый файл "tsmsisetup.exe", запустите его, чтобы распаковать. Теперь давайте принять во внимание папку "System32": это папка, содержащая

"команду mstsc.exe" и "mstscax.файл DLL." Теперь зарегистрируйте элемент управления ActiveX "MsTscAx":

 

Этот код использует преимущества недокументированного NtQuerySystemInformation

 API для получения списка загруженных драйверов в Windows NT.

 

 

Причиной написания этой статьи, как не странно, стала необходимость написания своего сервиса. Но в Borland'е решили немного "порадовать" нас, пользователей Delphi 6 Personal, не добавив возможности создания сервисов (в остальных версиях Delphi 5 и 6 эта возможность имеется в виде класса TService). Решив, что еще не все потеряно, взял на проверку компоненты из одноименного раздела этого сайта. Первый оказался с многочисленными багами, а до пробы второго я не дошел, взглянув на исходник - модуль Forms в Uses это не только окошки, но и более 300 килобайт "веса" программы. Бессмысленного увеличения размера не хотелось и пришлось творить свое.

Так как сервис из воздуха не сотворишь, то мой исходник и эта статья очень сильно опираются на MSDN.

Windows 2000 и более ранних версий: все процессы предоставляются SC_MANAGER_CONNECT,

 Права доступа SC_MANAGER_ENUMERATE_SERVICE и SC_MANAGER_QUERY_LOCK_STATUS.

 

 Windows ХР: только зарегистрированные пользователи имеют SC_MANAGER_CONNECT,

 SC_MANAGER_ENUMERATE_SERVICE,

 и SC_MANAGER_QUERY_LOCK_STATUS права доступа.

Демонстрация получения информации по сервисам: