0x80070005 (e_accessdenied) في تطبيق ASP.NET أثناء محاولة استخدام جدولة مهمة Windows

StackOverflow https://stackoverflow.com/questions/2599369

سؤال

أعمل حاليًا على تطبيق ASP.NET في VB.NET وأحد وظائفه هو استخدام جدولة مهمة Windows. سيحتاج التطبيق إلى تحكم كامل إلى حد كبير في هذا لأنه يحتاج إلى إنشاء المهام وتعديلها وحذفها وتشغيلها.

وجدت هذه المكتبة للمساعدة في كل شيء ويعمل بشكل جيد ولكن محليًا فقط على جهاز Windows XP الخاص بي. بمجرد نشر التطبيق على IIS6 على Windows Server 2003 والوصول إلى الصفحات التي تستخدم كائن الجدولة الخاص بي ، أحصل على الخطأ التالي.

الدخول محظور. (استثناء من Hresult: 0x80070005 (E_Accessdenied))

لقد بحثت عن حلول مختلفة على الشبكة التي تتضمن إعطاء أذونات مستخدمين محددة (وحتى الجميع) لمهام WINDIR ٪ باستخدام CACLs التي لم تنجح وأيضًا استخدام الانتحال وإضافة IUSER إلى مجموعة مستخدمي عمليات النسخ الاحتياطي التي فازت " يجب أن يستخدم التطبيق المصادقة المتكاملة لـ Windows.

أحد الأشياء التي تربكني حول الموقف برمته هو أن المستخدم الذي قمت بتسجيل الدخول إليه عند اختبار التطبيق يمكن أن يكون لسطح المكتب البعيد وتسجيل الدخول إلى الخادم والخروج مع جدولة المهام. أيضًا ، إذا قمت بتشغيل التطبيق محليًا في Visual Studio (لا يزال ضمن نفس المستخدم) وقم بتوجيه التطبيق إلى جدولة المهام للخادم ، فإنه يعمل بشكل جيد. علاوة على ذلك ، إذا قمت بتشغيل التطبيق من الخادم وأوجهه إلى جدولة المهام المحلية ، أحصل على نفس الخطأ "Access Refered". كل هذا يجعلني أعتقد أنه ليس أذونات جدولة المهام شيء ولكن شيء يتعلق بالأذونات على بعض المكونات التي تحاول مكتبة جدولة المهام استخدامها.

هل يعرف أي شخص ما يمكنني فعله لحل هذا أو حتى مجرد مؤشر في الاتجاه الصحيح لأن هذا كان يقودني إلى الجنون لأكثر من يوم الآن. يجب أن أقول إنني مبتدئ قليلاً عندما يتعلق الأمر بمشكلات IIS ، الانتحال الشخصي وأمان Windows Server.

شكراً جزيلاً

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

المحلول

مرحبًا ، لقد عرفت أنني قد أتأخر ما يمكنك فعله هو إما تعيين المهمة لتشغيلها ضمن نظام NT Authorit

(ج#)

سلسلة فارغة = فارغة ؛ Task.SetAccountInformation ("" ، null) ؛

ولتعيينه للمستخدم الحالي إعطاء اسم المستخدم

username = "اسم المستخدم XP الخاص بك" ؛
أو user username = system.security.principal.windowsidentity.getCurrent (). name ؛ سلسلة فارغة = فارغة ؛

Task.SetAccountInformation (اسم المستخدم ، NULL) ؛

هذا سوف يعمل من أجلك أتمنى !!!! واسمحوا لي أن أعرف كيف كان !!!

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