Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Servis uygulması üzerinden komut satırı çalıştırmak
#1
Selamlar;
Stack Link
adresindeki duruma benzer bir geliştirme lazım oldu. Fakat burdaki arkadaş gibi bende beceremedim.
Sorunu özetleyecek olursam servis uygulamasını debug mode'da iken çalıştırabildiğim cmd komutunu 
servis olarak çağırdığımda çalışmıyor. 
Yukardaki linkte neden çalışmadığına dair bilgilerde verilmiş yani yapılabilir gibi durmuyor. 
Belki önceden karşılaşan uğraşan vardır diye buraya da sorayım dedim.
Servisi debug mode'da yani standart bir uygullama olarak çalıştırararak sorunu aşabiliyorum şu an fakat 
Servis olarak çalışırken komut satırı komutlarını çalıştırmak istiyorum.
Umarım anlatabilmişimdir.Varmıdır yolu yordamı.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#2
Eger gercekten imkansiz ise ve illaki de yapmaniz gerekiyorsa dolayli bir yoldan yapilabilir muhtemelen. şöyle ki:

windows task managerde tanimlanmis bir taski servisten tetikleyebilirsiniz o da komutu calistirabilir. bu link ip ucu olabilir:
https://superuser.com/questions/502160/r...is-started

Ortamda MSSQL var ise onun uzerinden gerekli yetkiler acilarak CMD calistirilabilir.

Calistirmak istediginiz program kendi yaziliminiz ise buna COM obje baglanti ozelligi ekleyip devreye sokabilirsiniz belki.

Bunlar ilk anda aklima gelenler, Burada anahtar notkta galiba Baska bir prosese ve baska bir yetkiye gecebilmeniz. bu da uygun zaten calismakta olan bir araci kullanarak gerceklesebilir.
Cevapla
#3
Cevap için teşekkürler @cexx
Aynen dediğin gibi farklı yöntemler mevcut.
Bir şekilde yapılabilirliği var (debug mode'u bu alternatif çözüm olarak belirtmiştim)
Fakat servis uygulaması üzerinden servis olarak çalıştırabileceğim bir yöntem varsa daha makbule geçer.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#4
(02-03-2019, Saat: 11:57)ahmet_sinav Adlı Kullanıcıdan Alıntı: Cevap için teşekkürler @cexx
Aynen dediğin gibi farklı yöntemler mevcut.
Bir şekilde yapılabilirliği var (debug mode'u bu alternatif çözüm olarak belirtmiştim)
Fakat servis uygulaması üzerinden servis olarak çalıştırabileceğim bir yöntem varsa daha makbule geçer.

Merhaba, servis uygulamaları Session 0 izolasyon seviyesinde çalışıyor güvenlik önlemleri gereği. Bir uygulama çalıştırabilirsiniz servis uygulamaları içinden lâkin bu uygulama kullanıcı ile etkileşimde bulunamaz. Bunun için yapılmaya çalışılan bir çok yoldan birisi olan CreateProcessAsUser API'sini de kullanmaya çalışabilirsiniz, ancak yine de başarılı olamayacaksınız eğer Vista+ bir işletim sistemi kullanıyorsanız.

O halde ne yapılabilir. Bir kaç yöntem kullanılabilir:
  • Kullanıcı ile etkileşimli olan bir session'da (Genelde 3) çalışan bir uygulamaya DLL injection yapabilir ve o uygulama üzerinden uygulama başlatabilirsiniz.
  • Sadece uygulama başlatmak için kendinize ait bir uygulamanız olabilir ve servis uygulamanız ile o uygulama arasında bir iletişim sağlayabilirsiniz. (IPC).
  • Windows'un Task Schedular'ına bir görev oluşturabilirsiniz.
Daha pek çok yöntem eklenebilir. Ama sanıyorum bu yöntemler yeterlidir.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#5
@Tuğrul HELVACI cevap için teşekkürler.
Hem @cexx hemde senin belirttiğin gibi sorun izolasyon kaynaklı ve windows bu konuda haklı.
Şu an için servisi -debug ile çalıştırıyorum fakat çok uygun bir çözüm değil. Bu nedenle farklı bir
exe oluşturup bu exeye basit br schedule yapıp commandı çalıştırma yolunu seçtim.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#6
Selamlar;
Biraz daha araştırdım ve CreateProcessAsUser windows apisine ulaştım.
https://stackoverflow.com/questions/3398...user-fails
adresindeki yöntem ile servisin çalıştığı session id alınıyor ve bu session id ile token alınarak
CreateProcessAsUser apisi ile command çalıştırılabiliyor.
Önemli olan bir diğer nokta ise servisin property-->logon kısmında
Allow service to interact with desktop parametresinin aktif edilmesi gerekli.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#7
(06-03-2019, Saat: 11:24)ahmet_sinav Adlı Kullanıcıdan Alıntı: Selamlar;
Biraz daha araştırdım ve CreateProcessAsUser windows apisine ulaştım.
https://stackoverflow.com/questions/3398...user-fails
adresindeki yöntem ile servisin çalıştığı session id alınıyor ve bu session id ile token alınarak
CreateProcessAsUser apisi ile command çalıştırılabiliyor.
Önemli olan bir diğer nokta ise servisin property-->logon kısmında
Allow service to interact with desktop parametresinin aktif edilmesi gerekli.

Üstad ben o API'yi size mesajımda yazmıştım zaten Smile
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#8
@Tuğrul HELVACI doğrudur.Stack te uygulama içinde görünce bi heves geldi denedim oldu. Fakaaat bununda şu sıkıntısı var. Rdp ile login olup service i tetiklediğimizde token alamıyor. Çünkü rdp ile login olduğumuz user ile servicein çalıştığı user farklı. Local account yerine rdp ile login olduğum userı belirttiğimde interactive desteği olmuyor bu seferde Smile yaşlandırdı beni bu iş.
Harici exe yapacam demiştim ama oda olmuyor. Çünkü sistemde mutlaka açık bir login olmalı. @cexx yukarda xp cmd shell yazmıştı yarın öyle deneyecem birde nasipse.

Birde şunu farkettim yazılanları üstünkörü okumuşum Smile.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#9
(06-03-2019, Saat: 20:51)ahmet_sinav Adlı Kullanıcıdan Alıntı: @Tuğrul HELVACI  doğrudur.Stack te uygulama içinde görünce bi heves geldi denedim oldu. Fakaaat bununda şu sıkıntısı var. Rdp ile login olup service i tetiklediğimizde token alamıyor. Çünkü rdp ile login olduğumuz user ile servicein çalıştığı user farklı. Local account yerine rdp ile login olduğum userı belirttiğimde interactive desteği olmuyor bu seferde Smile yaşlandırdı beni bu iş.
Harici exe yapacam demiştim ama oda olmuyor. Çünkü sistemde mutlaka açık bir login olmalı. @cexx yukarda xp cmd shell yazmıştı yarın öyle deneyecem birde nasipse.

Birde şunu farkettim yazılanları üstünkörü okumuşum Smile.

Logon olayı nispeten basit. Elinizde admin haklarına sahip kullanıcı adı/şifre ikilisi var ise LogonUser Apisi ile token alıp ImpersonateLoggedOnUser apisini kullanabilirsiniz. RevertToSelf yapmayı da unutmayın tabii  Wink
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#10
@Tuğrul HELVACI teşekkür ederim bu 3 apiyi araştırayım.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Datasnap server üzerinden client bağlantısı sonlandırma seci20 13 482 15-03-2019, Saat: 09:10
Son Yorum: Tuğrul HELVACI
  [Çözüldü] HTTP üzerinden RTSP ile IP kamera stream işlemek Abdullah ILGAZ 3 1.311 06-03-2019, Saat: 00:47
Son Yorum: Yeliz
  Modern Servis Uygulama İskeleti Tuğrul HELVACI 20 808 13-02-2019, Saat: 11:00
Son Yorum: ssahinoglu
  delphi ile web servis yazmak. Kamuran Alpkaya 7 1.831 12-02-2019, Saat: 13:19
Son Yorum: enes6635
  Formu üsteki çarpıdan veya komut ile kapatma Bay_Y 12 460 08-02-2019, Saat: 09:53
Son Yorum: narkotik



Konuyu Okuyanlar: 1 Ziyaretçi