سؤال

كنت أتساءل عما إذا كانت هناك طريقة بسيطة لخدمة لإنشاء عملية في جلسة المستخدم؟

يتم تشغيل خدمتي كحساب مستخدم (مسؤول) وليس كمستوى Localsystem، لذلك لا يمكنني استخدام الدالة WTSQUERESERTONEL.

لقد حاولت الاتصال

OpenProcessToken(GetCurrentProcess,TOKEN_ALL_ACCESS,TokenHandle);

ولكن عندما أستخدم هذا الرمز المميز لتشغيل

 CreateProcessAsUser(TokenHandle,.....)

لا تزال عملي قيد التشغيل في الجلسة 0. كيف يمكنني حل هذه المشكلة؟

أنا أستخدم أتمتة OLE لذلك لا أهتم حقا في الجلسة التي ستستعد فيها العملية، طالما أنها ليست الدورة 0 - لأن OLE من بعض الأسباب لا تنشئ عملياتها (WINWORD.EXE ل مثيل) في الجلسة 0، ولكنه يخلقها في جلسات المستخدم الأخرى.

فإن أي اقتراحات سيكون موضع ترحيب. شكرا مقدما.

هل كانت مفيدة؟

المحلول

لقد تمكنت من حل هذه المشكلة بنفسي، شكرا لجميع أولئك الذين نظروا إلى هذا السؤال.

حسنا، كما ذكرت أعلاه - ينتمي الرمز المميز إلى عملية تعمل في الجلسة 0 ...

لذلك ما قمت به ... يتم البحث عن رمزية لعملية لا تعمل في الجلسة 0. عندما تأخذ معرف العملية كمعرف للمعلمة OpenProcessToken. من CreateProcessasSer سينشئ العملية في نفس الجلسة (وربما مع نفس السراويلية مثل العملية التي اخترتها)؛

كانت المشكلة أنه لا يمكنني الحصول على أي تفاصيل حول معظم العمليات باستخدام الوظيفة: QueryFullProcessImagename - لأنه يحتوي على خطأ، ولا يعمل على ProCcesses التي يتم إنشاؤها من المسار الذي يحتوي على مسافات تحتوي على مسافات (مثل C: ملفات البرنامج على سبيل المثال) وقضية أخرى مع هذه الوظيفة أعتقد أنها لأنني أقوم بتشغيل العملية الأصلية باستخدام السير العربي للمستخدم لا يمكنني الوصول إلى معلومات العملية التي تعمل باستخدام حساب النظام المحلي. وهو أمر سيء للغاية لأنني أردت أن تأخذ Winlogon.exe كعملي (لأنه يشير إلى جلسة جديدة مفتوحة).

أيضا من أجل Succeeed في هذه الخدعة، يجب أن تلعب قليلا مع أمان النظام، من أجل السماح للعملية بطلب الأمن المرتفع: ما اخترته للحصول على مرتفعة له هو: Sedebugprivilege - لإيجاد معلومات عن العمليات الجارية SeasSignPrimaryTokenPrivilege - من أجل تشغيل عملية جديدة مع الرمز المميز الذي استخرجت من عملية جلسة المستخدم (IE Explorer.exe) SecreateTokenPrivilege - لا أعرف ما إذا كانت هناك حاجة إليها، لكنني فعلت ذلك على أي حال لأنه يبدو مرتبطا به.

من أجل النجاح في رفع هذه الامتيازات - يجب عليك إضافة المستخدم الذي يدير المستخدمين إلى المستخدمين المعنيين في جميع هذه الامتيازات قيد التشغيل -> gpedit.msc أو تشغيل-> secpol.msc (ضمن سياسة الكمبيوتر المحلي تكوين الكمبيوتر إعدادات Windows Security Settres Settings LocalPolicies تعيينات حقوق المستخدم)

أضف حسابك إلى الحقوق التالية (متوافقة مع المبذول أعلاه):
إنشاء كائن رمزي
برامج التصحيح
استبدال رمز مستوى العملية

وهذا هو عليه! :) لقد كان يعمل عظيم! راجع للشغل، قد ترغب في تعطيل جميع الأشياء UAC ... لا أعرف ما إذا كانت مرتبطة أم لا، لكنها جعلت العمل مع عام 2008 أقل إيلاما - لا مزيد من النوافذ المنبثقة المنبثقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top