2014-05-20 36 views
5

kullanılarak yükseltilmiş süreci başlattığını ve bunu yükseltilmiş süreç olarak verilen bir çalıştırılabilir başlatmak gerekiyor.UAC kaçınmak ama olmayan bir interaktif hizmet Windows makinelerde ayrıcalıklı SYSTEM kullanıcısı çalıştıran sahip bir windows servisini

Bir sistem işlemini bulma ve belirteç olduğunu çoğaltarak, WTSGetActiveConsoleSessionId() kullanılarak, SYSTEM olarak bir çocuk sürecini başlatmak üzere başarmış. Benzer şekilde, normal kullanıcı olarak yükseltilmemiş bir işlem başlatabilirim. Ben UAC göstermek zorunda kalmamak için, ancak sürecin uygun kullanıcı olarak çalışıyor - Ama ben normal bir kullanıcı olarak, ancak yükseltilmiş ayrıcalıklarla sürecini başlatmak gerekir.

Ben UAC bypass çalışmıyorum - kullanıcı zaten hizmetini yüklemeden kabul beri. Bir rahatsızlığı azaltmaya çalışıyorum. Ben similar, unanswered question bulduk - ama belki bir cevap almak umuduyla tekrar sordu.

+0

Etkileşimli kullanıcı için bir simge almak üzere WTSQueryUserToken kullandığınızı ve etkileşimli kullanıcının yönetici olduğunu varsayarak, GetTokenInformation kullanarak TokenLinkedToken seçeneğini kullanarak yükseltilmiş jetonu edinebilmeniz gerekir. Yan not –

+0

, belirteç kendi SİSTEMİNİ çoğaltarak ve ardından SetTokenInformation ve TokenSessionId seçeneğini kullanarak oturum numarasını değiştirerek SYSTEM olarak bir çocuk sürecinin başlatılmasının mümkün (ve daha verimli) olmalıdır. –

+0

@HarryJohnston Fikirler için teşekkürler! Bağlantılı belirteç fikri işe yarıyor. Onu bir cevaba dönüştürürseniz, kabul edildi olarak işaretleyebilirim. – Liosan

cevap

3

etkileşimli kullanıcı için filtrelenmiş belirteç varsa - örneğin, bir WTSQueryUserToken() yoluyla alınan - Eğer TokenLinkedToken seçeneğiyle GetTokenInformation işlevini kullanarak filtresiz ("yükseltilmiş") belirteci alabilirsiniz.