Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Управление свойствами службы


Автор: cs137 30.8.2007, 20:39
Как можно управлять следующими свойствами службы (где их добыть): Description (описание службы - во второй колонке списка служб в Windows) и StartType (в опциях службы - Auto, Manual, Disable)? В ServiceController (namespace System.ServiceProcess) я что-то не нашел такого smile  Заранее спасибо!

Автор: Experimenter 31.8.2007, 06:28
Код

    [RunInstallerAttribute(true)]
    public class MyInstaller : Installer
    {
        private ServiceInstaller serviceInstaller1;
        private ServiceProcessInstaller processInstaller;

        public MyInstaller()
        {
            processInstaller = new ServiceProcessInstaller();
            serviceInstaller1 = new ServiceInstaller();
            processInstaller.Account = ServiceAccount.LocalSystem; //ServiceAccount
            //либо так:
            //processInstaller.Account = ServiceAccount.User;
            //processInstaller.Username = @"domain\username";
            //processInstaller.Password = "";
            //********
            serviceInstaller1.StartType = ServiceStartMode.Manual; //StartType
            serviceInstaller1.ServiceName = "My Super Service"; //ServiceName
            serviceInstaller1.Description = "Моя СуперСлужба"; //Description
            Installers.Add(serviceInstaller1);
            Installers.Add(processInstaller);
        }
    }

Есть одно но: все это прописывается в параметрах службы при ее установке при помощи утилитки installutil.exe. Как менять динамически, не скажу, потому что не знаю. Наверное невозможно.

Автор: cs137 31.8.2007, 08:18
Но в данном примере значения свойств устанавливаются, а не читаются. Просто ели бы была возможность "прикрутить" ServiceInstaller к уже установленной службе и получить свойства установки и описание...

Автор: shurik247 31.8.2007, 21:30
Код

using System;
using System.ServiceProcess;

namespace ConsoleApplication1
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            ServiceController[] services = ServiceController.GetDevices();
            foreach (ServiceController controller in services)
            {
                Console.WriteLine("// -- Service: " + controller.DisplayName);
                Console.WriteLine("Status: " + controller.Status);
                Console.WriteLine("// -------------------------------------");
            }
            Console.ReadKey();
        }
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)