Serviste exe çalıştırmak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Serviste exe çalıştırmak
Merhaba değerli arkadaşlar,
Windows servis çalışırken herhangi bir exe dosyanın açılmasını nasıl sağlayabiliriz.
Saygılarımla
Windows servis çalışırken herhangi bir exe dosyanın açılmasını nasıl sağlayabiliriz.
Saygılarımla
Re: Serviste exe çalıştırmak
emrgln yazdı:Merhaba değerli arkadaşlar,
Windows servis çalışırken herhangi bir exe dosyanın açılmasını nasıl sağlayabiliriz.
Saygılarımla
"Windows servis çalışırken" derken windows açıldığında otomatik program başlatmaktan mı bahsediyorsunuz.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
-
- Üye
- Mesajlar: 25
- Kayıt: 22 Ağu 2015 06:18
Re: Serviste exe çalıştırmak
Merhaba. Windows da bir servis yazdık. Servis belirli zamanlarda işlem yapmakta. Ama yapılan işlemin hatalı olduğunda kullanıcıyı bilgilendirmemiz gerekiyor. Bunun için form create etmeye çalıştık fakat başarılı olamadık. Shelexecute ile exe çalıştırmaya çalıştık .Yine başarılı olamadık. Acaba bir çözümü veya faklı bir yolu var mı? Teşekkür ederim. Kolay gelsin herkese.
Re: Serviste exe çalıştırmak
hayır kastettiğim o değil. servis çalışırken belli bir koşul oluştuğunda başka bir exe dosyanın çalıştırılmasından bahsediyorum. Veya soruyu şöyle de cevaplayabilirseniz işimi görür. servise ait bir formu kullanıcı ekranında gösterebilir miyiz?
Re: Serviste exe çalıştırmak
bu windows servis mantığına pek uymuyor. W. serivisindeki esas amaç gui arabirimi olmadan, ve kullanıcı loginine gerek kalmadan sistemde işlemler yaptırmak, mesela bir db replication işlemi, ne kullanıcıya nede gui ye ihtiyaç var. Senin bahsettiğin system tray de çalışacak bir uygulama. Şuda iş görebilir, illaki win service olacaksa, bir yere log tutar, ayrıca bir gui application bu log a bakım parse eder yada işler.
Kolay gele
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: Serviste exe çalıştırmak
Eğer bir windows service open dialog gibi bir pencere açmaya çalışırsa kullanıcıya bir servisin isteği olduğuna dair uyarı geliyor bazen. @freeman35'in dediği gibi windows servislerde form olmaz. Aslında Windows unit'i hiç olmaz. Bir ara windows unit'ini ekleyince derleme hatası da veriyordu servis uygulamasında.
Windows servis bir exe açsın kullanıcı bu uygulamayla etkileşime geçsin derseniz, normalde windows servis ayrı bir kullanıcı ile çalışır, oturum açan kullanıcının şifresini bilemeyeceğinde uygulamayı çalıştıramaz.
Şunu deneyebilirsiniz, belki çalışır: windows servisi oturum açan kullanıcı ile çalıştırın, oturum açıkken exe'yi çağırın.
Normalde windows servislerle arka planda form olmayan console uygulamaları, java dosyaları çalıştırabilirsiniz, ShellExecute komutuna bakınız.
Windows servis bir exe açsın kullanıcı bu uygulamayla etkileşime geçsin derseniz, normalde windows servis ayrı bir kullanıcı ile çalışır, oturum açan kullanıcının şifresini bilemeyeceğinde uygulamayı çalıştıramaz.
Şunu deneyebilirsiniz, belki çalışır: windows servisi oturum açan kullanıcı ile çalıştırın, oturum açıkken exe'yi çağırın.
Normalde windows servislerle arka planda form olmayan console uygulamaları, java dosyaları çalıştırabilirsiniz, ShellExecute komutuna bakınız.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Serviste exe çalıştırmak
Vaktim olup da bu konuda araştırma yapamadım maalesef ama bana da lazım olan bir mesele bu. Bir kaç örnekle açmak gerekirse, çok kullanıcılı bir Server üzerinde uzaktan her bağlanan kişi sağ altta Antivirüs, Teamviewer ve Everything Search Engine (dosya arama moturu) v.b... gibi uygulamalar çalışabilmektedir. Bu uygulamalar sanırım servis tabanlı çalışmaktalar. Her farklı kullanıcı için ayrı ayrı sistem tepsisi üzerinde arayüz çalıştırabilen uygulamalar başlatabiliyorlar. Özellikle TeamViewer hizmeti durdurulunca bu program tepsiden kalkıyor, hizmet tekrar başlatılınca geri gelebiliyor. Kullanıcılar, bu programı da çıkan simge üzerinden kullanabiliyorlar
. İşin püf noktası servis ve arayüz uygulamaları farklı uygulamalar ama servis üzerinden arayüz açma işlemine henüz bakamadım.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Serviste exe çalıştırmak
Eğer servis uygulaması admin kullanıcısı ile çalışıyorsa belki runas diyerek herhangi bir kullanıcı adına da uygulama çalıştırabiliyordur.
runas ile denedim olmuyor, illaki şifre istiyor. Teamviwer'ı detaylı bilmiyorum ama gözcü bir programı olabilir.
Biraz kurcaladım, tv_w32.dll veya tv_w64.dll dosyaları bu işi yapıyor galiba. DLL'lerde export edilmiş iki fonksiyon var:
GetLoaderInterface
GetTeamViewerInterface
Uygulama bu dll dosyalarını rundll32.exe'ye çalıştırtıyor olmalı.
runas ile denedim olmuyor, illaki şifre istiyor. Teamviwer'ı detaylı bilmiyorum ama gözcü bir programı olabilir.
Biraz kurcaladım, tv_w32.dll veya tv_w64.dll dosyaları bu işi yapıyor galiba. DLL'lerde export edilmiş iki fonksiyon var:
GetLoaderInterface
GetTeamViewerInterface
Uygulama bu dll dosyalarını rundll32.exe'ye çalıştırtıyor olmalı.
Re: Serviste exe çalıştırmak
ben bu şekilde servis kullanarak çalıştırabiliyorum örnek olması açısından bu işini görür. servise bir timer koy.
timer eventine:
Kod: Tümünü seç
function RunMeAsAdmin(hWnd: HWND; filename: string; Parameters: string): Boolean;
var
sei: TShellExecuteInfo;
begin
ZeroMemory(@sei, SizeOf(sei));
sei.cbSize := SizeOf(TShellExecuteInfo);
sei.Wnd := hwnd;
sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
sei.lpVerb := PChar('runas');
sei.lpFile := PChar(Filename); // PAnsiChar;
if parameters <> '' then
sei.lpParameters := PChar(parameters); // PAnsiChar;
sei.nShow := SW_SHOWNORMAL; //Integer;
Result := ShellExecuteEx(@sei);
end;
timer eventine:
Kod: Tümünü seç
RunMeAsAdmin(GetDesktopWindow, PChar(ExtractFilePath(ParamStr(0)) + 'programın.exe'), PChar('SHOWSETTINGS'));