Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Запуск сервиса

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 07.12.2011, 15:10   #1
Заблокирован
 Рыцарь-капитан
Аватар для warl0ck
 
warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
 
По умолчанию Запуск сервиса

Доброго времени суток.

подскажите пожалуйста, как запустить сервис...
вот выдернул такой код с WarpTunnel'a, устанавливается на ура но вот не стартует.
Код:
    public partial class Service1 : ServiceBase
    {
        public static string servName = "Servicename1";
        public static string servDisplayname = "Displayname1";

        ///точка входа
        static void Main(string[] par)
        {
            SeviceUtils.startService(servName, servDisplayname, Application.ExecutablePath, true);

            ServiceBase[] ServicesToRun = new ServiceBase[]   {   new Service1()  };
            ServiceBase.Run(ServicesToRun);
        }
            
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            MessageBox.Show("start");
        }

        protected override void OnStop()
        {
            MessageBox.Show("stop");
        }
    }
Код:
		public static bool isServiceRunning(string srvName)
		{
			if(!isServiceInstalled(srvName))
				return false;

			ServiceController serv = new ServiceController();
			serv.ServiceName = srvName;

			if(serv.Status == ServiceControllerStatus.Running)
				return true;
			else
				return false;

		}

		public static void removeService(string srvName)
		{
			if(isServiceInstalled(srvName))
			{
				uninstallService(srvName);
			}
		}

		public static bool startService(string srvName,string srvDescr,string srvFilePath,bool ifReinstall)
		{
			if(isServiceRunning(srvName))
				stopService(srvName,false);

			if(isServiceInstalled(srvName) && ifReinstall)
			{
				uninstallService(srvName);
				installService(srvName,srvDescr,srvFilePath);
			}

			if(!isServiceInstalled(srvName))
				installService(srvName,srvDescr,srvFilePath);


			ServiceController serv = new ServiceController();
			serv.ServiceName = srvName;

			if(serv.Status != ServiceControllerStatus.Running)
			{
				// запуск сервиса
				try
				{
				    serv.Start();
					serv.WaitForStatus(ServiceControllerStatus.Running);
					return true;
				} 
				catch
				{
					MessageBox.Show("Unable to stop service !");
				}

			}

			serv.Close();
			serv.Dispose();
			return true;
		}

		public static void stopService(string srvName,bool ifUninstall)
		{
			ServiceController serv = new ServiceController();
			serv.ServiceName = srvName;
			if(serv.Status == ServiceControllerStatus.Running)
			{
				try
				{
					serv.Stop();
					serv.WaitForStatus(ServiceControllerStatus.Stopped);
				} 
				catch
				{
                    MessageBox.Show("Unable to stop service !");
				}


				serv.Close();
				serv.Dispose();

				if(ifUninstall)
					removeService(srvName);

			}
		}

		public static void restartService(string srvName,string srvDescr,string srvFilePath)
		{
			stopService(srvName,true);
			startService(srvName,srvDescr,srvFilePath,true);
		}

		public static void installService(string srvName,string srvDescr,string srvFilePath)
		{
			ServiceInstaller.InstallService(srvFilePath ,srvName,srvDescr);		
		}

		public static void uninstallService(string srvName)
		{
			ServiceInstaller.UnInstallService(srvName);

		}

		public static bool  isServiceInstalled(string srvName)
		{
			bool ifFind = false;
			ServiceController[] scServices;
			scServices = ServiceController.GetServices();

			// Display the list of services currently running on this computer.

			foreach (ServiceController scTemp in scServices)
			{
				if(scTemp.ServiceName == srvName)
				{
					ifFind = true;
					break;
				}
			}

			return ifFind;
		}
Код:
		
public static bool InstallService(string svcPath, string svcName, string svcDispName)
		{
			int SC_MANAGER_CREATE_SERVICE = 0x0002;
			int SERVICE_WIN32_OWN_PROCESS = 0x00000010;
			//int SERVICE_DEMAND_START = 0x00000003;
			int SERVICE_ERROR_NORMAL = 0x00000001;
 
			int STANDARD_RIGHTS_REQUIRED = 0xF0000;
			int SERVICE_QUERY_CONFIG       =    0x0001;
			int SERVICE_CHANGE_CONFIG       =   0x0002;
			int SERVICE_QUERY_STATUS           =  0x0004;
			int SERVICE_ENUMERATE_DEPENDENTS   = 0x0008;
			int SERVICE_START                  =0x0010;
			int SERVICE_STOP                   =0x0020;
			int SERVICE_PAUSE_CONTINUE         =0x0040;
			int SERVICE_INTERROGATE            =0x0080;
			int SERVICE_USER_DEFINED_CONTROL   =0x0100;
 
			int SERVICE_ALL_ACCESS             =  (STANDARD_RIGHTS_REQUIRED     |
				SERVICE_QUERY_CONFIG         |
				SERVICE_CHANGE_CONFIG        |
				SERVICE_QUERY_STATUS         |
				SERVICE_ENUMERATE_DEPENDENTS |
				SERVICE_START                |
				SERVICE_STOP                 |
				SERVICE_PAUSE_CONTINUE       |
				SERVICE_INTERROGATE          |
				SERVICE_USER_DEFINED_CONTROL);
			int SERVICE_AUTO_START = 0x00000002;
 
			try
			{
				IntPtr  sc_handle = OpenSCManager(null,null,SC_MANAGER_CREATE_SERVICE);
 
				if (sc_handle.ToInt32() != 0)
				{
					IntPtr sv_handle = CreateService(sc_handle,svcName,svcDispName,SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,svcPath,null,0,null,null,null);
 
					if(sv_handle.ToInt32() ==0)
					{
 
						CloseServiceHandle(sv_handle);
						CloseServiceHandle(sc_handle);
						return false;
					}
					else
					{
						int i = StartService(sv_handle,0,null);
						if(i==0)
						{
							//Console.WriteLine("Couldnt start service");
							return false;
						}
						//Console.WriteLine("Success");
						CloseServiceHandle(sv_handle);
						CloseServiceHandle(sc_handle);
						return true;
					}
				}
				else
					return false;
 
			}
			catch(Exception e)
			{
				throw e;
			}
		}
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Прочее] Парсер сервиса ifolder alexagust Халява для Читера 2 26.08.2011 03:11
[Статья] Ищу партнера для осуществления сервиса мощного ЧЕКЕРА gum_classis Треп 1 22.06.2011 18:56

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 16:59.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net