Vіdminnіst mіzh servіsom i sluzhby vіndovsі. Windows tarafından hangi hizmetlere ihtiyaç duyulur ve hangileri kapatılabilir. Manuel robot moduna geçebilen Windows hizmetleri

Koristuvachіv (hem yerel hem de uzak) çalışma tablosu, ancak bazı hizmetler için suçlamak mümkündür - konsolla etkileşim (yerel olarak veya hizmetin başlangıcında koristuvach'ın kaydedilmesi durumunda 0 numaralı oturum) mstsc/console tuşuyla).

Hizmetler için modların kullanımı:

  • fırlatmadan önce çitle çevrili;
  • manuel başlatma (güç kaynağı için);
  • bilgisayar meşgulken her saat başı otomatik başlatma;
  • otomatik (çeşitli) başlatma (Windows Vista ve Windows Server 2008'de sunulmuştur);
  • obov'yazkova servis/sürücü (otomatik başlatma ve imkansızlık (bir corystuvach için) başlatma servisi).

Arka plan modu

Windows hizmetlerini başlatın, durdurun ve değiştirin

Hizmetler ve nitelikleri MMC konsolunda değiştirilebilir:

İşletim sistemlerinin farklı sürümlerinin bir hizmeti ve başka bir günü olabilir. Deyakі programları ve programları, yükleniyormuş gibi, böylece kendi hizmetlerini oluşturabilirler.

Microsoft Windows işletim sistemi hizmetlerinin listesi

Im'ya, ne görmek ben hizmet Fonksiyonlar Tanım
DHCP istemcisi dhcp Bu bilgisayar için kayıt defteri ve IP adreslerini ve DNS kayıtlarını güncelleyin. Bir Zupinena hizmeti olarak, bilgisayar dinamik IP adreslerini ve DNS güncellemelerini alamaz.
DNS istemcisi dnscache DNS istemci hizmeti (dnscache), DNS (Etki Alanı Adı Sistemi) adlarını önbelleğe alır ve bunları bilgisayar adının dışında kaydeder. Hizmet olarak güncellendi, DNS adlarının dağılımı trivatime. Ancak, DNS adlarının sonuçları önbelleğe alınmaz ve bilgisayar adları kaydedilmez.
Şube işlemleri koordinatörü için KtmRm KtmRm MSDTC ve Çekirdek İşlem Yöneticisi (KTM) arasındaki işlemleri koordine eder.
ReadyBoost EMDMgmt ReadyBoost Ek ReadyBoost teknolojisi ile sistem üretkenliğini artırma desteği.
süper getirme Sistem Ana süper getirme Sistemin üretkenliğini destekler ve geliştirir.
Windows Sesi sesli yayın Windows için sesli robotların yardımıyla küratörlük. Bu hizmet çalsa bile, ses ekipmanı ve efektler doğru şekilde işlenmeyecektir.
Windows Kart Alanı idsvc Bezpechuu nadіynu mozhlivіstvennija, cheruvannya ve rozkrittya digital svіdchen.
Otomatik güncelleme WUAUSERV Seçeneği açın ve yükleyin Windows güncelleme. Hizmet devre dışı bırakılırsa, hangi bilgisayarda yeteneği kazanmak imkansızdır otomatik güncelleme veya Windows Update web sitesi.
Haftalık Prosedürlerin Kaldırılması (RPC) RpcS'ler Uç noktaların ve diğer RPC hizmetlerinin ayarlandığından emin olun.

Microsoft programları tarafından oluşturulan hizmetlerin listesi

Diğer türdeki programlar ve programlar tarafından oluşturulan hizmetleri uygulayın

Im'ya, ne görmek ben hizmet Fonksiyonlar Tanım
ESET HTTP Sunucusu EhttpSrv antivirüs zakhist ESET HTTP Sunucusu bileşeni

İstemci programını bir hizmet olarak çalıştırabilir misiniz? Bir dış görünüm konsolu programı hizmet olarak başlatılamaz, ancak grafik arayüzlü programlar prensipte böyle çalışamaz. Ancak bir hizmet olarak bir zeyilname başlatmak ve orijinal adıyla program konusunda bize yardımcı olmak mümkündür. Emici Olmayan Servis Müdürü.

NSSM gerçek bir yazılım güvenliğidir bir kod ile tüm işletim sistemlerini destekleyen Microsoft Windows 2000 ile başlayıp bitirme. NSSM kurulumu etkilemez, sadece onu alıp paketinden çıkarmaya yetecek kadar. Dağıtım, 32 ve 64 bit işletim sistemleri için sürümleri içerir. Programı nssm.cc adresinden edinebilirsiniz. Narazi Kalan kararlı sürüm 2.21.1, bu yüzden içeri gireceğim.

NSSM'nin gücünü göstermek için Not Defteri'ni bir hizmet olarak çalıştırmayı deneyelim .

hizmet oluşturma

Onlar için hizmetin yaratılması için not defteri komut konsolunu başlatıyoruz, NSSM paketinin açıldığı klasöre gidiyoruz (64-bit Windows için) ve NSSM grafik yükleyicisinin penceresini açacak olan nssm install notepad komutunu giriyoruz. Bir hizmet oluşturmak için, Yol alanına dosyanın yolunu girin ve "Hizmeti yükle" düğmesini tıklayın. Dodatkovo, Seçenekler alanına servisi başlatmak için gerekli tuşları girebilirsiniz.

Ayrıca yeni bir servis oluşturma aşamasında ek parametreler atayabilirsiniz.

"Kapat" sekmesinde, işin normal tamamlanması veya programın acil durumda çalması sırasında sabitlendiklerinden, çalma ve zaman aşımı yöntemleri kullanılır. NSSM ses komutunu devre dışı bırakırsa (örneğin robot programı tamamlandığında), eklerin personel sıralamasına göre kontrolünün sesi devreye girer. Program çalışmıyorsa, NSSM programın tüm işlemlerini ve alt işlemlerini tamamlayabilir.

Robotik programın tamamlanmasının Usogo є chotiri aşamaları ve vicoristlerin kokusunun abdestleri için şu sırayla:

NSSM'nin ilk aşamasında, aşağıdakileri oluşturmak ve düzeltmek mümkündür. ctrl+c. Bu yol, konsol eklentileri veya komut dosyaları için iyi bir uygulamadır, ancak zastosovuetsya için değildir. grafik eklemeler;
Ardından NSSM, program tarafından oluşturulan tüm pencereleri tanır ve programdan çıkışı başlatan WM_CLOSE'u geçersiz kılar;
NSSM'nin üçüncü aşaması, program tarafından yaratılan tüm akışları sıralar ve sanki program iş parçacığını çağırabilirmiş gibi, WM_QUIT'in yerini alır;
Bir dinlenme NSSM isteği olarak, programın çalışmasını birincil olarak tamamlayan TerminateProcess() yöntemini çağırabilirsiniz.

Bazı veya tüm yöntemlerin açılması mümkündür, ancak farklı programlar için robotik programların doğru bir şekilde tamamlanması için farklı yöntemlerin kullanılması önerilir.

Abdest için, NSSM hizmeti її'yi yeniden başlatmaya zorlanır. "Çıkış eylemleri" sekmesinde, programın anormal şekilde tamamlanmasının otomatik zamanını değiştirebilir ve program otomatik olarak yeniden başlamadan önce bir gecikme ayarlayabilirsiniz.

"Giriş/Çıkış (G/Ç)" sekmesinde, programın giriş/çıkışlarının yeniden yönlendirilmesini dosya yönergelerinden ayarlayabilirsiniz.

"Ortam" sekmesinde, keskinleştirmede yeni değişiklikler yükleyebilir veya yeniden eşleyebilirsiniz.

Ayrıca, grafik kabuğunu kullanamazsınız ve aşağıdaki komutla konsolda hemen bir servis oluşturamazsınız:

nssm not defteri yükleme C:\Windows\system32\notepad.exe

Servis Yönetimi

NSSM yardımı için servisi oluşturduktan sonra Servisler ek bileşenine geçelim ve notepad servisini öğrenmiş olacağız. Nitekim diğer servislere müdahale etmiyor gibi görünüyor, ayrıca başlatabilir, başlatabilir veya başlatma modunu değiştirebiliriz. Ancak, indirilecek dosya olarak nssm.exe'nin gösterildiğini lütfen unutmayın.

Ve Görev Yöneticisi'ne gidersek, aşağıdaki resmi göreceğiz: NSSM ana (batkivsky) işlemi çalışırken, not defteri hizmeti ikinci alt işlem olarak çalışıyor ve ikinci alt öğede Not Defteri eklentisi çalışıyor işlem.

uzaktan hizmet

Hizmeti kaldırmak için nssm not defterini kaldır komutunu girin ve kaldırıldığını onaylayın. Ve nssm not defterini kaldır onay komutunu girerek, onaylamadan yapabilirsiniz.

Etkileşimli modda bir hizmet başlatma

Coristuvach programının hizmet alanındaki ana işlevi, programın başlatılmasından sonra, ekin çalışmasına coristuvacha'nın yanından devam etmek için kullanılabilmesidir - örneğin, düğmeye basın veya komutu girin . Kimin için, göründüğü gibi, elde edilmesi o kadar kolay olmayan yenisine erişmek gerekiyor.

Hizmeti etkileşimli modda başlatmak için, Hizmetler aracında "Sisteme giriş" sekmesinde "Çalışma tablosu ile etkileşime izin ver" onay kutusunu işaretlemeniz gerekir.

Ardından diva'yı başlatın Etkileşimli modda çalışan bir hizmet için sistem, oturum izolasyon sınırını (oturum 0) ayarlar. Bilgisayarda etkileşimli servislerin başladığını ve bu tür bir bildirim olduğunu gösteren etkileşimli servis algılama servisinin (ui0detect) yardımı için tüm oturumda daha fazla zaman harcayabilirsiniz. Windows 7\Server 2008'de bu hizmet bir kilit arkasında etkinleştirilirken, Windows 8\Server 2012'de devre dışıdır ve Hizmetin grafik ekipmanında görünmez (orada bilmiyorum). Dahası, gizli servisi hala tanıyorsanız ve onu başlatmaya çalışıyorsanız, af hakkındaki bilgileri alın.

Sağda, başlatmanın bilgisayarda etkileşimli hizmetleri çalıştırmasına izin verilmesi için. Bu nedenle, kayıt defteri düzenleyicisi, HKLM\System\CurrentControlSet\Control\Windows bölümünde, adları olan DWORD parametresi olarak bilinir. Etkileşimli Servis Yok ve değerini şuna ayarlayın 0 .

PowerShell konsolu gösterildikten sonra hizmet şu komutla başlatılır:

Start-Service -Name ui0detect

Görüntüleme hizmetinin çalıştığını kontrol ettikten sonra, not defteri hizmetini yeniden başlatın ve sonunda ekseni çıkarın. "Bildirime bak" öğesini seçiyoruz

ve programımızın çalıştığı sıfır seansta tüketilir. Dali robimo ile gerekli adımları atıp geri dönün.

Bu, programları Windows hizmetleri şeklinde başlatmak için çözümün eksenidir. En güzel değil, sadece aynı isim


Windows NT hizmeti (Windows NT hizmeti), Windows NT işletim sistemiyle arabirim oluşturmak için arabirimi birleştirebilen özel bir işlemdir. Hizmetler iki türe ayrılır - Hizmet Kontrol Yöneticisinin (SCM) yardımıyla işletim sistemiyle etkileşime giren Win32 hizmetleri ve sürücü protokolünün arkasında çalışan sürücü Windows eklentileri NT. Bu yazıda Win32 hizmetleri hakkında daha fazla tartışacağız.

Servis duraklaması

Hizmetin en önemli güçlerinden biri etkileşimsizliktir. Tipik hizmet - için gerekli değil harika koristuvach sokuşturmak arka plan modu. Hizmetin doğası gereği, aşağıdaki eklenti türlerinin uygulanması için en uygun olanıdır:

  • İstemci-sunucu mimarisindeki sunucular (örneğin, MS SQL, MS Exchange Sunucusu)
  • Windows NT hizmetleri (Sunucu, İş İstasyonu);
  • Ayrı programların sunucu (işlevsellik anlamında) bileşenleri (örneğin, tüm izleme programları).

Hizmetlerin ana makamları

Tipik bir Win32 programında hizmet, üç ana yetkili tarafından kontrol edilir. Onlara bir göz atalım.

Birincisi, robotik hizmetin doğru bir şekilde durdurulmasının (askıya alınmasının) fizibilitesidir. Standart mekanizmaları kazanan Coristuvach veya başka bir ek, hizmet istasyonunu değiştirebilir - її zі stanu vykonannya stan pauzi veya navit zupiniti її'yi robota çevirmek için. Hayatımın değişmesinden önce hizmet ettiğimde, örneğin kaynakları ödünç almak için yeni bir duruma gerekli geçişi yapabileceğim özel dikkat çekeceğim.

Başka bir şekilde, corist'e kaydolmadan önce hizmeti başlatma yeteneği, sonuç olarak, kayıtlı bir coristuvacha olmadan çalışma olasılığıdır. Her iki durumda da hizmet, işletim sisteminin başlangıcında otomatik olarak başlatılabilir ve siz sistemde oturum açmadan önce robotun çalışmasına izin verebilirsiniz.

І, nareshti, yeterli olmayan bir gagalama bağlamında çalışma olasılığı. Windows NT güvenlik bağlamı, bir işlemin çeşitli sistem nesnelerine ve verilerine erişim hakları kümesini belirler. Her zaman sistemde kayıtlı olan coristuvach'ın güvenliği bağlamında çalışan Win32 programının görünümünde, hizmet için güvenlik bağlamı bir sonraki adıma atanabilir. Tse, hizmet için sistemin nesnelerine mesafenin arkasındaki bir dizi erişim hakkı atayabileceğiniz ve aynı zamanda faaliyet alanını çevreleyebileceğiniz anlamına gelir. Yüz hizmet, Yerel Sistem adı verilen özel bir tür güvenlik bağlamı kullanır. Bu bağlamda çalışan bir hizmetin yerel bilgisayarın kaynakları üzerinde hiçbir hakkı yoktur. Birleştirilmiş işlemlerin hiçbiri Yerel Sistem izinleriyle kullanılamaz, ancak bağlamı şunlara duyarlı olabilir: yerel bilgisayar ve merezhі'nın diğer bilgisayarları tarafından tanınmaz.

Hizmetin diğer programlarla etkileşimi

İster program olsun, ister herhangi bir hakkınız varsa hizmetinizle etkileşime girebilirsiniz. Vzaєmodіya, pershu cherga'da, değişikliği hizmet istasyonuna aktarıyor, üç istasyondan birine aktarılıyor - pratsyuche (Başlat), duraklat (Duraklat), zapinenya (Duraklat), bu zupinka ek SCM tedariki içindir. Üç tür isteyin - hizmet türlerinin bildirimi (istasyonlarının sabitlenmesi), bir hizmetin yapılandırmasını değiştirme talebi veya bununla ilgili bilgileri kaldırma ve programların bir hizmeti değiştirmesini isteme.

Hizmeti yönetmek için önce Win32 API OpenService yardımcı işlevinin bir tanıtıcısını tutmanız gerekir. StartService işlevi hizmeti başlatır. Hizmeti değiştirmeniz gerekirse, ControlService işlevine tıklamanız istenecektir.

hizmet veritabanı

Dış görünüm hizmetiyle ilgili bilgiler kayıt defterinde - HKLM\SYSTEM\CurrentControlSet\Services\ServiceName anahtarının altında saklanır. Böyle vіdomosti var:

  • Servis tipi. Vkazuє, tsmu ekinde uygulananlar için yalnızca bir hizmet (özel) veya ek kіlka'da їх. Özel bir hizmet, herhangi bir güvenlik bağlamında uygulanabilir. Bir programın ortasındaki Dekіlka hizmetleri yalnızca LocalSystem bağlamında çalışabilir.
  • başlangıç ​​türü. Otomatik - hizmet, sistem başlangıcında başlar. Vimogu'da - hizmet bir koristuvach tarafından manuel olarak başlatılır. Devre dışı - hizmet başlatılamıyor.
  • Simgeleştirilecek modülün adı (EXE dosyası).
  • Diğer hizmetlere sipariş vermeye başlayın. Bazı durumlarda, doğru bir hizmetin çalışması için bir veya daha fazla hizmetin başlatılması gerekir. Kayıt defterinin bundan önce başlatılan hizmetler hakkında bilgi almasını istiyor musunuz?
  • Hizmet güvenliği bağlamı (Bu parolayı kaydediyorum). Promosyonun arkasında, güvenlik bağlamı LocalSystem olarak ayarlanmıştır.

Hizmetle ilgili bilgileri kaldırması veya hizmetin bu veya başka bir parametresini değiştirmesi gereken programlar, kayıt defterindeki hizmet veritabanındaki bilgileri değiştirmekten esasen sorumludur. Diğer Win32 API işlevleriyle ilgili yardım isteyebilirsiniz:

  • OpenSCManager, CreateService, OpenService, CloseServiceHandle - hizmeti kapatmak (açmak) için;
  • QueryServiceConfig, QueryServiceObjectSecurity, EnumDependentServices, EnumServicesStatus - hizmet hakkında bilgi almak için;
  • ChangeServiceConfig, SetServiceObjectSecurity, LockServiceDatabase, UnlockServiceDatabase, QueryServiceLockStatus - hizmet yapılandırma bilgilerini değiştirin.

Dahili ek.

Sırayla, ek, basit bir işlevselliğe sahip basit bir işlevler kümesi (C ++ açısından) dahil olmak üzere, daha yüksek bir rütbe ile iktidarda olmaktan suçludur. Kısaca cilde bakalım.

ana işlev

Görünüşe göre ana işlev, herhangi bir Win32 konsol programına giriş noktasıdır. Hizmet başlatıldığında, işlevin kodu önceden sabitlenecektir. Başlatmadan sonraki 30 saniye boyunca, ana işlev, SCM programı arasında bir bağlantı kurmak için StartServiceCtrlDispatcher dilini çağırmaktan sorumludur. Usі komunіkatsії mіzh ne tür bir hizmet ne dodatku Bu SCM, programdaki tüm servislerin başlamasından sonra işi bitirdiği için StartServiceCtrlDispatcher fonksiyonunun ortasına kurulur.

HizmetAna işlevi

Krim zagalnoprotsesnoy giriş noktası aynı zamanda ekte uygulanan cilt hizmetlerinin giriş noktasıdır. Hizmet giriş noktaları olarak hizmet eden işlevlerin adları (basit olması için hepsine ServiceMain diyoruz) StartServiceCtrlDispatcher çağrısına saatte bir parametrede SCM'ye iletilir. ServiceMain viscon için dış görünüm hizmetini başlattığınızda, bir su akışı oluşturulur.

Otrimavshi keruvannya, ServiceMain her şeyden önce hizmetten önce bir istek örneğini kaydedebilir, İşleyici işlevi, cilt hizmeti için bir ek olarak. Bu ServiceMain'den sonra, servisi başlatmak için aşağıdakileri çalın - hafızaya bakın, verileri tekrar okuyun. Hizmet hala başlama sürecindedir ve günlük bir arıza yaşanmamıştır. Bildirimler, SetServiceStatus işlevinden ek yardım içindir. Sonuncusu hariç tüm haftalar SERVICE_START_PENDING parametresine ve geri kalanı - SERVICE_RUNNING parametresine bağlıdır. Çağrıların periyodikliği hizmet sağlayıcı tarafından belirlenir, bu da zihnin zihninden geliyormuş gibi görünür: iki mahkeme çağrısı arasındaki zaman aralığının geçiciliği, SCM'ye iletilen dwWaitHint parametresinin değerinin geçersiz kılınmasından SetServiceStatus sorumlu değildir. ilk iki arama Ve değilse, o zaman SCM, chergov'un hatırlatıcısını saatte çıkarmadan, hizmeti bir primus primus ile başlatır. Bu şekilde, hizmet durumunun sessiz veya diğer arızaların meydana gelmesinden sonra başlangıçta kaybolmasına izin verir (hizmetin etkileşimli görünmediğini ve bir çökme olmadan başlatılabileceğini tahmin edin). Zvichayna uygulaması, başlatmanın ilk taslağının tamamlanmasından sonra SCM'nin yükseltilmesi gerektiğidir.

işleyici işlevi

Daha fazlasını tahmin ettiğim gibi, İşleyici bir geri arama işlevinin prototipidir, hizmetten önce bir istek isteği, ek için kendi dış görünüm hizmetidir. Hizmetin talep edilmesi gerektiğinde (başlat, askıya al, güncelle, başlat, uyarı) İşleyici çağrılır. satır içi olacağım) bu vykonuє nebhіdnі vіdpovіdno zapі dіі önce vіdpovіdno, bundan sonra novіdomlyaє yeni kamp SCM.

Bir istek özellikle önemlidir - robotik sistemin tamamlanmasından sonra alınması gereken istek (Kapatma). Tsey, vikontun sıfırlanmasının gerekliliği ve tamamlanacağı hakkında bir sinyal isteyecektir. Microsoft, cilt hizmetinin tamamlanmasının 20 saniye sürdüğünü ve ardından bir primus gibi ses çıkarmaya başladığını belirtiyor. Protestocular, Umov'un aklının galip geldiğini ve o saatin sonuna kadar primus sobasının servisinin devam ettiğini gösterdi.

Servis güvenlik sistemi

Be-yaka diya hizmetler üzerinde ekten ek haklar gerektirecektir. Tüm programların SCM'yi kilitleme, hizmetleri yeniden diriltme ve hizmet veritabanı engellemesini yeniden kontrol etme hakkı vardır. Yönetici haklarına sahip olabileceğinden, yalnızca programlar sisteme yeni bir hizmet kaydedebilir veya bir hizmetin veritabanını engelleyebilir.

Cilt servisinin, bu diğer operasyona nasıl hak kazanabileceğini açıklayan bir güvenlik tanımlayıcısı olabilir. Kilitleme için:

  • Tüm hakları SERVICE_QUERY_CONFIG, SERVICE_QUERY_STATUS, SERVICE_ENUMERATE_DEPENDENTS, SERVICE_INTERROGATE ve SERVICE_USER_DEFINED_CONTROL;
  • Koristuvachі, Power Users grubuna ve LocalSystem oblіkovy kaydına girmek için scho, ayrıca SERVICE_START, SERVICE_PAUSE_CONTINUE ve SERVICE_STOP haklarına izin verin;
  • Koristuvachі scho, scho, Yöneticiler ve Sistem Operatörleri gruplarına girer, sağda SERVICE_ALL_ACCESS olabilir.

Hizmetler ve etkileşim

Tanıtım amacıyla, etkileşimli hizmetler LocalSystem güvenlik bağlamıyla sınırlandırılabilir. Bunun nedeni, örneğin "Masaüstü" gibi bir nesne gibi Windows NT'de monitör ekranında görüntülemenin özelliklerinden kaynaklanmaktadır. oblіkovogo kaydı, LocalSystem'i görüntüleyin. Nezvazhayuchi, bu scho'da bulunanlar için, bu scho'da yer almaktadır.

Kod parçacığı. Böyle bir olasılığı gösteriyorum.

Bu parça için bir istek istemeniz, programın bir bölümünü RPC'ye eklemeniz gerekir, hizmet monitör ekranında metin bildirimleri görüntüler.

Popo Servisi (Anahtar Parçaları)

Windows NT hizmetini uygulayan Z ++ tarafından hazırlanan raporun önemli bölümlerine bir göz atalım. Doğruluk için, kodun bölümleri çıkarılmıştır.

ana işlev

Göstergelerde, ana işlevin kodu.

HizmetAna işlevi

Özellikle ServiceMain'e yerleştirilen kod, bir sonraki işlemin gecikmesini geciktirmek için genellikle imkansız olan kodlardır, özellikle de hatanın zengin görev nedeniyle işletim sisteminde meydana gelmesi yanlışsa. İşlem, SetServiceStatus çağrı aralığı parametresinin bir saat aralığına sahip olmasından daha fazla zaman alıyorsa, hizmet hemen yaklaşan bir bildirim gönderemez ve ardından SCM'nin robotu araması gerekir. Potansiyel işlemlerin uçları, robotun işlevlerini büyük zaman aşımlarında çağırmak veya yeterli aşınmadan büyük miktarda bilginin bir kerelik okunması için kullanılabilir. Ek olarak, böyle bir pidhid vergi hizmeti sırasında kesinlikle durgun değildir, vergi ekipmanındaki programın parçalarına perakendeci için gerekli olan büyük duraklamalar eşlik eder.

Bu sorunu ortadan kaldırmak için, SCM ile karşılıklı bağımlılıktan kaynaklanan tüm işlemler, başlatma aşamasında gerekli olan, suda yatmayan sağlıklı bir kapta yapılmalıdır.

Okumalar, ek bir akış olan hizmetin doğru şekilde başlatılması için bir algoritmaya sahiptir.

işleyici işlevi

Göstergeler, İşleyici işlevinin koduna ve ek akışlara sahiptir. "Durdur" ve "Kapat" istekleri için, hizmetin başlangıcında üzerine yazılana benzer şekilde doğru hizmet çağrısının algoritmasının üzerine yazılır, bir farkla, SetserviceStatus'tan SERVICE_START_PENDING parametresi yerine SERVICE_STOPSERVPENDING parametresi şu şekildedir: geçti ve değiştirme SERVICE_RUNNING.

İdeal olarak, "Duraklat" ve "Devam" içmek için aynı zamanda hattı kazanan bir sonraki satırdır. Dopitlivy chitach, bu popo üzerinde spiral çizerek yoga yapabilir.

Visnovok

Son olarak, Windows NT 2000'e geçişle birlikte hizmetlerin geliştirilmesinin değişikliği tanımadığını belirtmek isterim. Hizmetler, daha önce olduğu gibi, önemli bir bölümden yoksundur. yazılım perakendecilere geniş bir faaliyet alanı sağlayan Windows platformunda.


// MessageBox Win32 API'sine benzer işlev int ServerMessageBox(RPC_BINDING_HANDLE h, LPSTR lpszText, LPSTR lpszTitle, UINT fuStyle) (DWORD dwThreadId; HWINSTA hwinstaSave; HDesk " ve "Desktop"; (); hdeskSave = GetThreadDesktop(dwThreadId); // "Pencere istasyonu" ve "Masaüstü" nesnelerinden önceki // olandaki güvenlik bağlamını değiştirin // RpcImpersonateClient(h); hwinstaUser), hdeskUser = OpenDesktop ("Varsayılan", 0, FALSE, MAXIMUM_ALLOWED); RpcRevertToSelf(); urn 0; ) SetThreadDesktop(hdeskUser); // Standart metin kutusunu göster. sonuç = MessageBox(NULL, lpszText, lpszTitle, fuStyle); 'Evet // " Pencere istasyonu" ve "Masaüstü". SetThreadDesktop(hdeskSave); SetProcessWindowStation(hwinstaSave); CloseDesktop(hdeskUser); CloseWindowStation(hwinstaUser); dönüş sonucu; ) void main() ( SERVICE_TABLE_ENTRY steTable = ( (SERVICE), (SERVICE), (BOŞ), (NAME,) , BOŞ) ); // SCM'den bir bağlantı kurun. İstekleri almak ve göndermek için // bu işlevlerin ortasını kullanın. StartServiceCtrlDispatcher(steTable); ) void WINAPI ServiceMain (DWORD dwArgc, LPSTR *psArgv) ( // İstek işleyicisini hemen kaydettirin. hSS = RegisterServiceCtrlHandler(SERVICENAME, ServiceHandler); sStatus.dwCheckPoint = 0; sStatus.dwControlsStatusAccepted = UERVICEStatus |Spectre_SERVICESTOP_ACCEP_IN_SERVICES dwServiceSpecus .dwServiceType = SERVICE_WIN32_OWN_PROCESS sStatus.dwWaitHint = 0 sStatus.dwWin32ExitCode = NOERROR // іnіtsіalіzatsії hizmet viklikaєtsya funktsіya InitService () sinhronіzatsії akış stvoryuєtsya Podiya .// Pіslya tsogo zapuskaєtsya robochem potіk, d için protsesі іnіtsіalіzatsії içinde ;, Shcho hizmet .// için la // Alt hizmet başlatmayı oluşturanları // senkronize et.InitService();SetEvent(hSendStartPending);if(WaitForSingleObject(hSendStartThread, 2000) != BEKLEYİN _OBJECT_0) ( TerminateThread(hSendStartThread, 0); ) CloseHandle(hSendStartPending); CloseHandle(hSendStartThread); hWork = CreateEvent(BOŞ, DOĞRU, YANLIŞ, BOŞ); hServiceThread = CreateThread(NULL, 0, ServiceFunc, 0, 0, &dwThreadId); sStatus.dwCurrentState = SERVICE_RUNNING; SetServiceStatus(hSS, &sStatus); ) // Başlatma işleminin devam ettiği hakkında bir saniyeliğine SCM bildirimi gönderen iş parçacığı için bir işlev //. Robot işlevi // hSendStartPending pod geri yüklendiğinde sona erer. DWORD WINAPI SendStartPending(LPVOID) ( sStatus.dwCheckPoint = 0; sStatus.dwCurrentState = SERVICE_START_PENDING; sStatus.dwWaitHint = 2000; // 1 saniyeliğine "Gecikti". 1 saniyeliğine bile // hizmetin başlatılmasında // sonlandırılmadı ), aşırı güçlü dwCheckPoint++;if(WaitForSingleObject(hSendStartPending, 1000)!=WAIT_TIMEOUT) break; ) sStatus.dwCheckPoint = 0; 0 döndür; ) // Hizmeti başlatan işlev. Verilerin okunması // hatırlama, vb. void InitService() (...) // Servis kodunu kontrol eden fonksiyon. DWORD WINAPI ServiceFunc(LPVOID) ( while (true) ( ​​if (!bPause) ( // Kodun geçirileceği yer burasıdır, hangi // vikonu döngüsel işlemler olarak ses çıkarır... ) if (WaitForSingleObject(hWork, 1000)!=WAIT_TIMEOUT ) Break; ) 0 döndür; DOĞRU, YANLIŞ, BOŞ), hSendStopThread = CreateThread(NULL, 0, SendStopPending, NULL, 0, & dwThreadId); ) SetEvent(hSendStopPending), CloseHandle(hServiceThread), CloseHandle(hWork); ServiceStatus(hSS, &sStatus); kırmak; durum SERVICE_CONTROL_PAUSE: bPause = true; sStatus.dwCurrentState = SERVICE_PAUSED; SetServiceStatus(hSS, &sStatus); kırmak; case SERVICE_CONTROL_CONTINUE: bPause=true; sStatus.dwCurrentState = SERVICE_RUNNING; SetServiceStatus(hSS, &sStatus); kırmak; case SERVICE_CONTROL_INTERROGATE: SetServiceStatus(hSS, &sStatus); kırmak; varsayılan: SetServiceStatus(hSS, &sStatus); kırmak; ) ) // Hizmet öbeği için SendStartPending // benzeri bir iş parçacığı işlevi. DWORD WINAPI SendStopPending(LPVOID) ( sStatus.dwCheckPoint = 0; sStatus.dwCurrentState = SERVICE_STOP_PENDING; =WAIT_TIMEOUT) mola;) sStatus.dwCheckPoint = 0; 0 döndür;)

Program bir Windows hizmetinde nasıl çalıştırılır



İstemci programını bir hizmet olarak çalıştırabilir misiniz? Makalelerden birinde, normal işletim sistemleriyle bir Windows hizmeti oluşturmanın yolları. Ancak, bir dış görünüm konsolu eklentisi hizmet olarak başlatılamaz, ancak grafik arayüze sahip programlar prensipte böyle çalışamaz. Ancak bir hizmet olarak bir zeyilname başlatmak ve orijinal adıyla program konusunda bize yardımcı olmak mümkündür. Emici Olmayan Servis Müdürü.

NSSM, tüm operasyonel işlemleri destekleyen açık kodlu gerçek bir yazılım güvenliğidir. Microsoft sistemleri, Windows 2000'den Windows 8'e kadar. NSSM kurulum gerektirmez, sadece indirip paketinden çıkarın. Dağıtım, 32 ve 64 bit işletim sistemleri için sürümleri içerir. Programı nssm.cc sitesinden edinebilirsiniz, şu anda kalan kararlı sürüm 2.21.1, yani ben kazanacağım.
NSSM'nin gücünü göstermek için Windows Notepad'i Windows 8.1 hizmeti olarak çalıştırmayı deneyelim.

hizmet oluşturma

Onlar için hizmetin yaratılması için not defteri komut konsolunu başlatıyoruz, NSSM (64-bit Windows için) paketini açarak klasöre gidiyoruz ve komutu giriyoruz

kod:

nssm yükleme not defteri

NSSM grafik yükleyicisinin bir penceresi olarak. Bir hizmet oluşturmak için, Yol alanına dosyanın yolunu girin ve "Hizmeti yükle" düğmesini tıklayın. Ayrıca Seçenekler alanına servisi başlatmak için gerekli olan tuşları da girebilirsiniz.

Ayrıca yeni bir servis oluşturma aşamasında ek parametreler atayabilirsiniz.

Kapatma sekmesinde, işin normal tamamlanması veya programın acil durumda çalması sırasında geri yüklendikleri için çalma ve zaman aşımı yöntemleri kullanılır. NSSM ses komutunu devre dışı bırakırsa (örneğin robot programı tamamlandığında), eklerin personel sıralamasına göre kontrolünün sesi devreye girer. Program çalışmıyorsa, NSSM programın tüm işlemlerini ve alt işlemlerini tamamlayabilir.

Robotik programın tamamlanmasının Usogo є chotiri aşamaları ve vicoristlerin kokusunun abdestleri için şu sırayla:

İlk aşamada NSSM, Ctrl+C komutunu oluşturup göndermeye çalışıyor. Bu yol, konsol eklentileri veya komut dosyaları için iyidir, ancak grafik eklentileri için değildir;
Ardından NSSM, program tarafından oluşturulan tüm pencereleri tanır ve programdan çıkışı başlatan WM_CLOSE'u geçersiz kılar;
NSSM'nin üçüncü aşaması, program tarafından yaratılan tüm akışları sıralar ve sanki program iş parçacığını çağırabilirmiş gibi, WM_QUIT'in yerini alır;
Bir dinlenme NSSM isteği olarak, programın çalışmasını birincil olarak tamamlayan TerminateProcess() yöntemini çağırabilirsiniz.

Bazı veya tüm yöntemlerin açılması mümkündür, ancak farklı programlar için robotik programların doğru bir şekilde tamamlanması için farklı yöntemlerin kullanılması önerilir.

Abdest için, NSSM hizmeti її'yi yeniden başlatmaya zorlanır. Çıkış eylemleri sekmesinde, robot programının anormal bir şekilde tamamlanması durumunda otomatik eylemi değiştirebilir ve programı otomatik olarak yeniden başlatmadan önce bir gecikme ayarlayabilirsiniz.

“Giriş/Çıkış (G/Ç)” sekmesinde, dosya yönergelerinden programın giriş/çıkışlarına yeniden yönlendirme ayarlayabilirsiniz.

"Ortam" sekmesinde, hizmet için yeni değişiklikler yükleyebilir veya buna göre yeniden eşleyebilirsiniz.

Ayrıca, grafik kabuğunu kullanamazsınız ve aşağıdaki komutla konsolda hemen bir servis oluşturamazsınız:

kod:

nssm kurulum not defteri "C:\Windows\system32\notepad.exe"

Servis Yönetimi

NSSM yardımı için servisi oluşturduktan sonra Servisler ek bileşenine geçelim ve notepad servisini öğrenmiş olacağız. Nitekim diğer servislere müdahale etmiyor gibi görünüyor, ayrıca başlatabilir, başlatabilir veya başlatma modunu değiştirebiliriz. Ancak, indirilecek dosya olarak nssm.exe'nin gösterildiğini lütfen unutmayın.

Ve Görev Yöneticisi'ne gidersek, aşağıdaki resmi göreceğiz: NSSM ana (batkivsky) işlemi çalışırken, not defteri hizmeti ikinci alt işlem olarak çalışıyor ve ikinci alt öğede Not Defteri eklentisi çalışıyor işlem.

Yazılım sistemine bir bakış. Bunun için Windows 7 bağlamında hizmetler tartışmasına dönmemiz oldukça doğaldır. Windows 7'de sunulan hizmetlerin optimizasyonunun yolları hakkında ikinci kez konuşalım. Bu makale yeni sürüme atanmıştır. pencere özellikleri 7 – Tetik Başlatma Hizmetleri. Öncelikle API'ye geçelim, buna servislerin büyük resmi diyelim.

hizmet nedir?

Servis - ce iç mekanizma, ameliyathanede vbudovaniya Windows sistemi. Hizmetleri, çekirdeğin akış bağlamında bağımsız olarak çalışan özel programlarla kullanabilirsiniz. Hizmetler, coristuvacha'nın varlığından bağımsız olarak, sistemin açıldığı (yakalandığı) andan kapatılana kadar çalışacak şekilde yapılandırılabilen özel programlar şeklinde etkinleştirilir. Tobto hizmetleri pratsyuvati yapabilir, navit akscho koristuvach sisteme vykonav vkhіd değil.

Arka planda çalışan ve uyandırma işlemine müdahale etmeyen görevleri çalıştırarak servisleri daha iyi çalıştırmanız sizin için önemlidir. Windows hizmetleri, Uzaktan Yordam Çağrısı (RPC), Yazıcı Biriktiricisi ve Ağ Konumu Farkındalığına kadar her türlü arka plan etkinliğinden sorumludur.

Windows'un zenginliği sayesinde servis sayısı arttı ve bir anda servis sayısı arttı. Dürüst olalım, Windows arka plan hizmetleri çok acı verici - işletim sistemi Sipariş hiçbir hizmet olmadan teslim edilir. Ayrıca bağımsız yazılım satıcıları (ISV'ler) ve bu programlar daha da fazla hizmet sağlar. Örneğin, yazılım güncelleme hizmetleri. Aynı zamanda, Sing koristuvach'ın sisteme girememesi ve diğerlerinin başlatılmasını gerektirmemesi durumunda, diğer suçlamalara ihtiyaç duyulduğundan, hizmet görevlileri işe alım sürecinde kritik derecede önemli ve gereklidir. arandılar. Ne olursa olsun, şu anda çalışan servislerin listesine bakarsanız, 7x24 bir şema üzerinde çalışmaya gerek olmadığından anonim nesneler arayın.

Hizmetlerin nesi var, 24 yıl 7 gün doba için ne işe yarıyor?

7 gün 24 saat çalışan hizmetlerle ilgili birkaç sorun vardır. İlk olarak, pratik yapmak (arka plan moduna geçmek) mümkündür, öyleyse neden yeni bir şekilde tüketmiyorsunuz? Herhangi bir başlatma işlemi (hizmetler dahil) pahalı bellek ve CPU kaynakları kullanıyorsa, diğer hizmet programları için kullanılabilir. Aynı anda çalışan tüm hizmetleri kurtardığınızda, koku bellekte, tanıtıcılarda, akışlarda ve CPU kullanımında birikir. Tüm bu "vitrat" ​​kaynakları, bilgisayarın genel verimliliğini azaltır ve bilgisayarın zayıf ve güçlü olduğu hasarla başa çıkmak için. Bundan önce, birçok hizmetin parçaları otomatik başlatma için ayarlanmıştı (sistemin başlangıcında bir saat onarım), bir saatlik zawantazhennya bilgisayarı için kokuyorlar.

Başka bir deyişle, kaynakların tüketimi doğrudan elektrik tasarrufu ile gösterilir. chim daha fazla kibir CPU üzerinde, bilgisayar tarafından daha fazla güç tasarrufu sağlanır. Dizüstü bilgisayarlar için önemli olabilir ve birkaç yıl pillerle bir saatlik çalışmayı geçebilir.

Üçüncüsü, verimsiz yazılımın çalışma sonrası belleğe ve toplam sistem kararsızlığına getirilebilir. Robotik programlarda, nareshti, bilgisayarda çarpışmadan önce.

Nareshti, sanki hizmet 24x7 şemasına göre çalışıyor ve hizmet evde iyiymiş gibi (popüler cilt programlarında görünebileceği gibi - örneğin, PDF Okuyucu), saldırı için geniş bir yüzey oluşturur. Saldırgan, programın çok popüler olduğu hakkında bilgi alabilir, 24x7 modunda çalışan hizmeti yükleyebilir ve bilgisayara erişimi engellemek için hack'leri deneyebilir.

Vrakhovuchi, yukarıdakilerin tümü, sanki koku başka bir fırsat olabilirmiş gibi, neden bu kadar çok perakendecinin hizmetlerini kalıcı bir iş için yaptığını merak edebilirsiniz. Windows 7'ye kadar, hizmetleri başlatmak için kullanılabilecek birkaç seçenek vardı:

  • Devre Dışı (Vimkneno) hizmeti yeniden etkinleştirin ve nadas hizmetlerin başlatılmasını ve başlatılmasını önleyin - bu, koristuvach'ın hizmeti kapatma panelinden veya komut satırından manuel olarak açmaktan suçlu olduğu anlamına gelir
  • Manuel hizmeti kullanmak için (diğer hizmetlerin bağımlılıklarına bağlanmak için) veya hizmeti aşağıda gösterildiği gibi ek API'ler için programlarla çağırırken başlatın.
  • Otomatik girişte hizmeti başlat
  • Otomatik Gecikmeli- Windows Vista'da ortaya çıkan ve sistemin başlatılmasını hızlandıracak olan bu erken işlemlerin başlatılmasının tamamlanmasından sonra hizmetin başlatıldığı yeni bir başlatma türü.

Ne yazık ki, birçok ISV (Microsoft'un kendisi dahil) hizmetlerini Otomatik (Otomatik) veya Otomatik Gecikmeli Başlatma (Otomatik Gecikmeli) olarak ayarlamaya devam ediyor, bu en basit çözümlere bir örnek. Hizmet yalnızca 7 gün 24 saat çalışır ve gerekirse mevduatların yeniden doğrulanması veya hizmetin çalıştığı her zaman kullanılabilir.

7 gün 24 saat çalışmadan önemli ölçüde daha az kaynağa yol açabilecek ve daha güvenli hale gelebilecek temel hizmetlerin anonim uygulamalarını kurmak mümkündür. Örneğin, güncelleme hizmetini, program için yeni güncellemelerin kullanılabilirliğini kontrol ediyormuş gibi düşünün. Bilgisayar merezhі'ya bağlanmazsa, bir IP adresi yoktur, o zaman neden çalışması gerekir? Hiçbir şey yapamıyorsanız, o zaman şimdi çalışan programı mahrum bırakmalısınız, bu yüzden hiçbir şey yapmayın? Politikacıları yönetmenin hizmetini, değişim saatinde nasıl kazanılacağını düşünün. grup politikaları veya bilgisayar etki alanına bağlıysa veya bilgisayar evime bağlıysa, hizmet hala uygulanabilir.

Bir tetikleyicide başlatılarak hizmetlerin görünümü

Virishennya vyschevkazanyh, vidennі hizmetinde polygaє sorunları zі stan düzenli çalışma» Tetikleyici tarafından tetiklenen planlanmış işler veya hizmetler gibi diğer arka plan etkinliği türleri. Bu makale, Windows 7 Tetik Başlatma Hizmetleri ile ilgilidir. Windows 7 Zamanlanmış Görevler hakkında, gelecek makalelerde kırılacak birçok şey söyleyebilirsiniz.

yazıcılar