2016-03-21 28 views
-2

Bir hizmete el atıyorum ve bir işlem gerçekleştirin. Bu süreci bir çocuk süreci olarak hizmete sokmak mümkün mü? Evet ise nasıl yapabilirim?İşlemi, alt işlem olarak hizmete başlamaya başlayın

Hem bu hizmet hem de süreç, başka bir uygulama tarafından oluşturulmuş, burada ben bunlarla başa çıkıyorum. hizmet için

Alma kolu:

schService = OpenService(schSCManager, ServiceName, SERVICE_CHANGE_CONFIG); 

sürecine el atmak:

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID); 

durup schservice için çocuk olarak hprocess başlamak istiyorum.

+0

Bize neyi denediğinizi göster – lmiguelmh

+0

Windows, * nix'te bulduğunuz ana/alt işlem kavramına sahip değil. Ebeveyn sadece 'CreateProcess' adı verilen süreçtir ve ebeveyn, ebeveyni olmadan devam etmek için çocuktan ayrılmaktan oldukça mutlu bir şekilde feshedebilir. Eğer iki işleme sahipseniz, süreçler zaten var. Asıl sorunun nedir? Neden soruyorsun? –

+0

'OpenService()', çalışan bir hizmet işlemine tanıtıcı döndürmez. –

cevap

0

Bu işlemi bir alt işlem olarak yeniden başlatmak mümkün mü?

Hiç değilse kolayca değil. Özgün olarak ortaya çıkan komut satırı için işlemi sorgulamanız ve ardından CreateProcess() veya CreateProcessAsUser() kullanarak aynı komut satırının yeni bir kopyasını başlatmak için çalışan hizmet sürecine kod enjekte etmeniz gerekir. Elbette, hizmetiniz enjektörünüzden daha yüksek bir bütünlük/güvenlik düzeyinde çalışıyorsa, kodun içine enjekte edemezsiniz.

'u schservice için alt öğe olarak durdurmak ve başlatmak istiyorum.

Neden? Bunu yapmak için gerçek bir fayda yoktur. İşlemin, halihazırda çalışmakta olduğundan daha yüksek bir bütünlük/güvenlik düzeyinde çalışmasını sağlamak için işletim sisteminin güvenliğini aşmaya çalışmadığınız sürece. Ve işletim sistemi buna izin verirse çok tehlikeli bir güvenlik ihlali olur.

İlgili konular