Ş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?
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. –
@PreetSangha Yorumunuzun bir cevap olması için yeterince iyi olduğunu düşünüyorum. – Renan
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ü) –