2013-08-05 66 views
5

Şu anda lowvelvel fare kancaları kullanan bir uygulama yazıyorum. Uygulamayı yönetici ayrıcalıklarına sahip sistemle başlatmam gerektiğinden, bir hizmet oluşturmak istedim (bkz. Burada: Is this a practical use of a service?). Şimdi bir servisin kanca fare kancalarını kullanamadığını öğrendim. Bu yüzden yeni bir konsepte ihtiyacım var ama nereden başlayacağımı gerçekten bilmiyorum. Bunu basit bir işlemle denedim, ancak sistem başlangıcında yönetici olarak çalıştırmak için görev zamanlayıcıyı kullanamadım.Windows Hizmetine Alternatif

Peki ne kullanması tavsiye edilir? İşlem başlatmak için hala bir Windows Hizmeti kullanmalı mıyım? Bu biraz aşırı değil mi?

DÜZENLEME: Sadece çeneyi hizmet dışı yapan işlemi başlatmaya çalıştım. Süreç başlar ama basit bir hizmet gibi davranır gibi davranır gibi davranır. Çengeli kurabilirim ama geri arama çağırılmaz. Bu kod ile süreci başlıyorum:

STARTUPINFO info={sizeof(info)}; 
PROCESS_INFORMATION processInfo; 
if (!CreateProcess(path, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) 
{ 
    std::wstring msg(L"Could not start \""); 
    msg.append(path); 
    msg.append(L"\". CreateProcess"); 
    WriteErrorLogEntry((PWSTR)msg.c_str()); 
    return; 
} 

nasıl sorunu çözebilir ? Sürecin yönetici haklarıyla çalışması gerekiyor, ancak başka bir içeriğe mi ihtiyacı var?

+1

Bunu yapmanın daha basit bir yolu yoksa sadece aşırı sıkıntı var - ki bunu düşünemiyorum. Bir süreci doğuran bir hizmetiniz varsa, o zaman bunun iyi olduğunu düşünüyorum. Sadece servis kontrol sinyallerinin (durdurma/başlatma/duraklatma vb.) Işleme aktarıldığından emin olunuz. Bu şekilde, mantıksal bir hizmetiniz vardır, bu aslında iki fiziksel sürece bölünür. –

+0

@PreetSangha Yorumunuzun bir cevap olması için yeterince iyi olduğunu düşünüyorum. – Renan

+0

Ve sadece birden fazla kullanıcı hesabının aynı anda aktif olabileceğini unutmayın ("hızlı geçiş" özelliğine sahip Windows XP ve hatta iki yöneticinin aynı anda oturum açmasına izin veren herhangi bir Windows Server sürümü) –

cevap

-1

Programın yönetici ayrıcalıklarına sahip bir programı başlatmak için Görev Zamanlayıcısı'nı kullanabileceğinizi düşünüyorum.

Burada UAC istemleri olmadan Yönetimsel ayrıcalıklarla çalışan bir kısayolun nasıl oluşturulacağını gösteren bir web sitesi, Görev Zamanlayıcısı'nı, programı başlatmanın yolu olarak kullanır. bunu manuel olarak çağırmak için istemiyorsanız

http://www.howtogeek.com/howto/windows-vista/create-administrator-mode-shortcuts-without-uac-prompts-in-windows-vista/

, yine otomatik Programı başlatmak için Görev Zamanlayıcı her zamanki özellikleri kullanabilirsiniz.

+0

iyi. sana daha önce söylediğim gibi.Bunu çok farklı şekillerde denedim. ama genellikle beklendiği gibi çalışmıyor. –

0

Tahminimce fare girdisi oturum başına, bu yüzden istediğiniz davranışı alamadığınızı tahmin edeceğim çünkü işleminiz istediğiniz WindowsStation'da çalışmıyor.