Windows hizmetlerinde neden GUI bulunamıyor?


22

Bu özelliği XP ve NT gibi önceki Windows sürümlerinde kullanıyordum. Bir Windows hizmetinden bir GUI çalıştırabildim. Ancak sonraki sürümlerde mümkün değildir.

Bu özelliğin kaldırılmasının arkasındaki sebep nedir? Windows hizmetlerinde neden GUI bulunamıyor?

Yanıtlar:


47

Temelde güvenlik sebepleri.

Anladığım kadarıyla, bir windows servisi bir MessageBox gibi GUI kontrolleri oluşturduğunda, normalde yalnızca servislerin çalıştığı oturumda, yani yerel olarak oturum açan ilk kullanıcı olan veya oturum açmış olan bir kullanıcı tarafından kullanılan Oturum 0'da görüldü. mstsc / admin Dolayısıyla bu kullanıcı bu kontrolleri görecekti ve hizmetle etkileşime girebildi.

Ancak güvenlik nedeniyle, Oturum 0 artık ayrılmıştır ve oturum açan ilk kullanıcıya yeni bir oturum verilecektir ve bu nedenle GUI Denetimlerini görmeyecektir.

Bu, pek çok hizmeti bozduğundan, uyumluluk için, herhangi bir iletinin gösterilip gösterilmediğini belirten bir işlem var ( bu MSDN bloguna bakın) ve 'Bu bilgisayarda çalışan bir program bir ileti görüntülemeye çalışıyor 'mesajı görüntülemenizi veya görmezden gelmenizi sağlar.

Microsoft'un bu konuda buradan indirebileceğiniz bir Beyaz Kitabı var

Başka bir küçük nedenin de özelliğin yanlış kullanıldığından / yanlış anlaşıldığından ve kötü tasarımlara yol açtığından şüpheliyim. Örneğin, olay günlüğüne yazmak yerine bir mesaj kutusu kullanarak bazı bildirimler / hatalar görüntüleyen üçüncü taraf bir hizmete sahip eski bir sunucum vardı. Ancak hiçbir zaman yerel olarak oturum açmadım ve nadiren yönetici modunda oturum açtığım için mesajları göremedim.


1
UAC ile bir ilgisi olduğunu hissediyorum - bu güvencenin, UAC isteminin bir iş istasyonu oturumunu etkileşimli kullanıcıyla paylaşamayacağı anlamına gelir ya da bir bilgisayar korsanı, UAC isteminde olduğu gibi kendi isteğini ortaya çıkarabilir.
gbjbaanb

23

İnteraktif servisler eskiden mümkündü , fakat servis modeli herhangi bir kullanıcıdan bağımsız olarak çalışan bir işlemdi. Katılımsız çalıştırılmak üzere tasarlanmıştır ve bu nedenle bir GUI'ye ihtiyaç duyulmamalıdır.

Etkileşimli hizmetler, Windows Vista'dan bu yana kullanılmamaktadır, bu nedenle artık kullanılmamalıdır.

Hizmetle etkileşime geçmeniz gerekiyorsa, bağlantı kurduğum sayfa, belirli türden işlemler arası iletişim (IPC) - örneğin adlandırılmış yöneltmeler aracılığıyla hizmetle iletişim kuran ayrı bir GUI uygulaması oluşturmanızı önerir.


Beğeniniz eskidir: Hizmetler, Windows Vista'dan itibaren bir kullanıcıyla doğrudan etkileşim kuramaz. Bu nedenle, İnteraktif Servis Kullanma başlıklı bölümde belirtilen teknikler yeni kodda kullanılmamalıdır.
nemke

10

Hizmetlerin, kullanıcıyla etkileşime girmeden arka planda çalışması gerektiği için; aslında hiçbir kullanıcı giriş yapmadığında çalıştırılabilirler.


öyleyse neden bu özellik önceki sürümlerde vardı? Cevabınızı göz önünde bulundurarak, Windows hizmeti ve masaüstü uygulaması arasında hiçbir iletişim olmayacak. Yani bu cevap uygun değildi.
Arun,

3
@Arun - bu mantığa göre, o zaman kırılan şeyler asla düzeltilmez. Michael'in cevabı doğrudur - hizmetler guis olmamalıdır. Sırf pencerelerin önceki sürümlerinde (guis'li servislerde) olması, sahip olmaları gerektiği anlamına gelmezdi .

8
@Arun masaüstü hizmetlerle hizmetler arasında hiçbir iletişim olmadığı, sadece hizmetin bir GUI'ye sahip olmadığı doğru değildir. Aksine, bir masaüstü uygulamasının GUI'si vardır ve sunucuyla iletişim kurar.
Paul Hiemstra

Yani, windows servisleri GUI'ye sahip olabilirler, ancak buna sahip olmamalı mıydı?
Arun,

1
@Arun, servislerin kendilerine ait GUI'leri yoktur, ancak çoğu zaman hizmeti bir şekilde iletişim kurarak (adındaki borular, soketler, ... aracılığıyla) hizmetini kontrol edebilen ayrı ön uç uygulamaları tarafından kontrol edilir
GrandmasterB

0

Evet mümkündü ve işe yaradı. Giriş yaptığınızda uygulamanın arayüzü var. Kullanılabilir bir hizmeti olmayan ancak yine de sunucuda çalışması gereken eski uygulamalar için çok kullanışlıdır. En kararlı çözüm olmasa da. Tıklayabilecek veya çıkabilecek kullanıcı olarak yayınlandı. Bu çok hoş değildi.

Artık herkes yerel servisler geliştiriyor ve servisi yönetmek için bir uygulama veya günlük ekliyor. Bu iyi bir tasarım deseni ve şimdi çoğu zaman kullanılıyor.

Öyleyse daha mümkün olduğunu miras olarak gör.


-1

Servisler, esasen arka planda gerçekleşmemiş işlemlere yöneliktir. Ad servisinin kendisi, bazı müşteri uygulamaları veya bu servisi kullanan diğer servisler için bir sunucu görevi görür. Böylece, MS şimdi temellere bağlı kalmak isteyebilir ve hizmetler ile Uygulamalar arasında net bir ayrım yapmak isteyebilir. Böylece uygulamalar kullanımları meşgul eder ve hizmetlerin amaçlarına sessizce hizmet etmesine izin verir. Tırnak makası varken neden mutfak bıçağını sıfırdan keser?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.