SORU
14 Aralık 2010, Salı


Başlat / Yönetici olmayan bir kullanıcı hesabı, bir Windows Hizmeti Durdur

Bir WindowsService, diyelim ki, BST verdi. Ve Yönetici olmayan bir kullanıcı, Kullanıcının,/bu özel hizmeti Başlatmak ve Durdurmak için bu izinleri vermek istiyorum. Benim hizmet Windows Server 2003 için Windows 7'den başlayarak Windows işletim sistemi, çeşitli üzerinde çalışır.

Bunu nasıl yapabilirim?

Ve izinleri komut [sc sdset] kullanarak vermekle ilgili bir şeyler Araştırdım buldum ama tam olarak parametreleri hakkında tam emin değilim. Bir grup için izinler ayarlamak istemiyorum, ama belirli bir kullanıcı için, bu durumda Kullanıcının.

CEVAP
15 Aralık 2010, ÇARŞAMBA


Birlikte/Yönetici olmayan bir kullanıcı hesabı, bir Windows Hizmeti Durdurma Başlatma hakkında öğrendiğim her şeyi koymak var aşağıda, eğer herkes bilmeli.

Öncelikle, her hangi bir Windows Hizmeti Başlatmak ve Durdurmak için iki yol vardır. 1. Doğrudan erişim oturum açma, Windows hizmet hesabı kullanıcı. 2. IIS Ağ servisini kullanarak üzerinden hizmete erişme hesabı.

Komut satırı komut / stop hizmetlerini başlatmak için:

C:/> net start <SERVICE_NAME>
C:/> net stop <SERVICE_NAME>

C# / stop hizmetlerini başlatmak için Kod:

ServiceController service = new ServiceController(SERVICE_NAME);

//Start the service
if (service.Status == ServiceControllerStatus.Stopped)
{
      service.Start();
      service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(10.0));
}

//Stop the service
if (service.Status == ServiceControllerStatus.Running)
{
      service.Stop();
      service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(10.0));
}

NOT 1: IIS üzerinden hizmet erişirken, Visual Studio# ASP.NET C bir Web Uygulaması oluşturun ve oraya kodu koy. Bu Java eklentisi Kök Klasörü IIS dağıtmak (C:\inetpub\wwwroot\) ve gitmek için iyi bir konum. Url http:/// tarafından erişimi.

1. Doğrudan Erişim Yöntemi

Eğer Windows Kullanıcı Hesabını da sen ver komutunu çalıştırın veya Kodu olmayan bir Yönetici hesabı daha sonra ihtiyacınız ayarlayın ayrıcalıkları için belirli bir kullanıcı hesabı var yeteneği başlatmak ve durdurmak için Windows Hizmetleri. Bu nasıl yapacağındır. Hangi/hizmet etmek istiyorum olmayan Yönetici hesabı bilgisayarda bir Yönetici hesabı için oturum açma.Komut istemini açın ve aşağıdaki komutu verin:

C:/>sc sdshow <SERVICE_NAME>

Bu çıkış bu gibi bir şey olacaktır:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Bu bilgisayarda her Kullanıcı / Grubu ile olan tüm izinleri ilgili listeler .

A description of one part of above command is as follows:

    D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)

It has the default owner, default group, and it has the Security descriptor control flags (A;;CCLCSWRPWPDTLOCRRC;;;SY):

ace_type - "A": ACCESS_ALLOWED_ACE_TYPE,
ace_flags - n/a,
rights - CCLCSWRPWPDTLOCRRC,  please refer to the Access Rights and Access Masks and Directory Services Access Rights
CC: ADS_RIGHT_DS_CREATE_CHILD - Create a child DS object.
LC: ADS_RIGHT_ACTRL_DS_LIST - Enumerate a DS object.
SW: ADS_RIGHT_DS_SELF - Access allowed only after validated rights checks supported by the object are performed. This flag can be used alone to perform all validated rights checks of the object or it can be combined with an identifier of a specific validated right to perform only that check.
RP: ADS_RIGHT_DS_READ_PROP - Read the properties of a DS object.
WP: ADS_RIGHT_DS_WRITE_PROP - Write properties for a DS object.
DT: ADS_RIGHT_DS_DELETE_TREE - Delete a tree of DS objects.
LO: ADS_RIGHT_DS_LIST_OBJECT - List a tree of DS objects.
CR: ADS_RIGHT_DS_CONTROL_ACCESS - Access allowed only after extended rights checks supported by the object are performed. This flag can be used alone to perform all extended rights checks on the object or it can be combined with an identifier of a specific extended right to perform only that check.
RC: READ_CONTROL - The right to read the information in the object's security descriptor, not including the information in the system access control list (SACL). (This is a Standard Access Right, please read more http://msdn.microsoft.com/en-us/library/aa379607(VS.85).aspx)
object_guid - n/a,
inherit_object_guid - n/a,
account_sid - "SY": Local system. The corresponding RID is SECURITY_LOCAL_SYSTEM_RID.

Şimdi yapmamız gereken uygun izinleri istiyoruz gruplar veya kullanıcılar için/Stop Windows Hizmetleri Başlatmak için ayarlamak için. Bu durumda Yönetici olmayan geçerli kullanıcının kullanıcı için izinleri ayarlamak için gidiyoruz yani/hizmet Durdurmak başlatabilmek ihtiyacımız var. Bunu yapmak için, belirli bir Windows Kullanıcı Hesabının SID ihtiyacımız var. Onu elde etmek için, Kayıt defterini (Başlat ^ açalım . Kral naibi) ve aşağıdaki kayıt defteri anahtarını bulun.

LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Her her bir kullanıcı bu bilgisayarda hesap ayrı bir Anahtar olduğunu ve her hesabın SID altından. SİD genellikle biçimi-1-5-21-2103278432-2794320136-1883075150-1000 S. Her Tuşa tıklayın ve sağ bölmede her Anahtar için değerler listesi göreceksiniz. "Profileımagepath SİD ait", ve Kullanıcı Adını bulabilirsiniz. değer. bulun Eğer hesabın kullanıcı adı SACH örneğin, = "" bir şeyler olacak "gibi". C:\Users\Sach Profileımagepath Aşağı kullanıcı SID not için izinleri ayarlamak istediğiniz hesabı.

NOT 2: Burada basit bir C# bir listesini elde etmek için kullanılan kod örnek Anahtarları ve değerleri olduğunu söyledi.

//LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList RegistryKey
RegistryKey profileList = Registry.LocalMachine.OpenSubKey(keyName);

//Get a list of SID corresponding to each account on the computer
string[] sidList = profileList.GetSubKeyNames();

foreach (string sid in sidList)
{
    //Based on above names, get 'Registry Keys' corresponding to each SID
    RegistryKey profile = Registry.LocalMachine.OpenSubKey(Path.Combine(keyName, sid));

    //SID
    string strSID = sid;
    //UserName which is represented by above SID    
    string strUserName = (string)profile.GetValue("ProfileImagePath");
}

İzinlerini ayarlamak istediğiniz kullanıcı hesabının SID biz şimdi işimize bakalım. Diyelim kullanıcı hesabının SID olduğunu varsayalımS-1-5-21-2103278432-2794320136-1883075150-1000. Bir metin editörü [sc sdshow ] komut çıktısını kopyalayın. Bu gibi görünecektir:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Şimdi, kopya(;; BİR CCLCSWRPWPDTLOCRRC;;;SY)metin bölümü yukarıda ve yapıştırındaha önce sadece: (;... AU . S metnin bir parçası. Sonra değiştirmek için böyle bir sorun o kısmı: (;; BİR RPWPCR;;;-1-5-21-2103278432-2794320136-1883075150-1000 S)

Sonra ekleyinsc sdsetön ve tırnak ile yukarıda kısmını alın. Son komut aşağıdaki gibi görünmelidir:

sc sdset <SERVICE_NAME> "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2103278432-2794320136-1883075150-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

Şimdi senin emrine bu istemi yürütmek, ve eğer başarılı olursa aşağıdaki gibi çıktı verecektir:

[SC] SetServiceObjectSecurity SUCCESS

Şimdi gitmeye hazırız! Yönetici olmayan bir kullanıcı hesabı izinleri/hizmet etmek olmuştur! Kullanıcı hesabı günlüğü ve/hizmeti Başlatmak deneyin ve bunu yapmana izin gerekir.

2. IIS yöntemle erişim

Bu durumda, "" oturum açma Windows kullanıcı hesabı yerine. Ağ Hizmetleri IIS kullanıcı izni vermek lazım Prosedür aynı, komut parametreleri değişecektir. İznimiz kurduktan sonra "Ağ Hizmetleri", "dizesini finalde . NS ile SİD değiştirin ^em>sdsetdaha önce kullandığımız komut. Son komut böyle bir şey görünmelidir

sc sdset <SERVICE_NAME> "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;NS)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

Komut Admin kullanıcı hesabından istemi, yürütme ve voila! Herhangi bir kullanıcı hesabı (Yönetici hesabı, ıa bakılmaksızın) hizmet WebMethod kullanarak Durdurmak Başlatmak için izin veriyorum. Note1 için bunu yapmak için nasıl bulmak için başvurun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HER0R

    HER0R

    16 Aralık 2007
  • We've moved!

    We've moved!

    7 Ocak 2008
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009