اصلاح خطای ۱۰۰۱۶ در Windows Event Viewer
به عنوان یک گیک، وقتی ویندوزم درست کار نمیکند فوق العاده عصبانی میشوم. از خودم میپرسم، اگر نتوانم مشکلات کامپیوترم را خودم حل کنم، چه جور گیکی هستم؟ حل همهی مشکلات فنی کامپیوتر نیازمند صرف زمانی بسیار زیاد برای اصلاح مسائلی است که مشکلات بزرگی برای سیستم ایجاد نمیکنند.
گویا آی تی – با این وجود این سبک از کارها همیشه جالب و فوق العاده آموزنده هستند. در این مقاله میخواهم دربارهی اصلاح خطایی صحبت کنم که به خاطر DistributedCOM در برنامهی Event Viewer ظاهر میشود. در بررسیهای ابتداییام متوجه شدم که به جز یک خطای تکراری با Event ID شمارهی ۱۰۰۱۶ هیچ مشکلی در لاگ سیستمم ثبت نشده است. پیغام این خطا معمولاً به شکل زیر میباشد:
The application-specific permission settings do not grant Local Activation permission for the COM Server application
در بخش General اطلاعاتی دربارهی CLSID، APPID و SID و چیزهایی در رابطه با تغییر مجورها با استفاده از Component Services نوشته شده است.
بعد از کمی جستجو در انجمنهای کاربری مختلف، موفق شدم راهحل مشکل را پیدا کنم. این فرآیند کمی طولانی است، بنابراین برای انجام آن باید یکی دو ساعت وقت بگذارید.
مرحله ۱ – بررسی پردازش
اولین کاری که باید بکنیم این است که پردازش یا سرویس مربوط به CLASS ID خطای مذکور را پیدا کنیم. برای انجام این کار، CLSID مربوطه را که در بخش توضیحات رویداد نوشته شده کپی کنید. مثلاً در مورد من، این آیدی با عبارت {D63B10C5 شروع میشود. عبارتی که کپی میکنید حتماً باید آکولادهای ابتدایی و انتهایی را هم داشته باشد.
اکنون با کلیک روی دکمهی Start و تایپ عبارت regedit، برنامهی Registry Editor را باز کنید. سپس از منوی نرمافزار روی Edit و بعد Find کلیک نمایید. حالا متنی که کپی کردید را داخل فیلد مربوطه پیست کنید و Enter بزنید.
بعد از چند لحظه نتیجه را از بخش HK_CLASSES_ROOT\CLSID میبینید. از سمت راست صفحه دو کلید مشاهده میکنید که کلید پیشفرض باید نام سرویس مربوطه باشد. برای من و احتمالاً شما، این سرویس RuntimeBroker است.
AppID سرویس هم باید با چیزی که در پیغام خطا ارائه شده بود همخوانی داشته باشد. حالا باید اسکریپتی را اجرا کنیم که امکان اعمال تغییرات در مجوزهای Component Services را برای سرویس مذکور فراهم میکند.
مرحله ۲ – اجرای اسکریپت PowerShell
برای حل این مشکل، باید برخی از مجوزهای RuntimeBroker را از بخش Component Services ویرایش کنیم، ولی قبل از آن، باید اسکریپتی را اجرا کنیم که اجازه انجام این تغییرات را به ما بدهد.
برای اجرای اسکریپتهای پاورشل با دسترسیهای مدیریتی، باید روی Start کلیک کرده و powershell را تایپ کنید. سپس روی نتیجهای که میآید کلیک راست و گزینهی Run as administrator را انتخاب نمایید.
حالا فایل متنی این لینک را دانلود، محتویات آن را به طور کامل کپی و داخل پنجرهی PowerShell پیست کنید (اگر در پنجرهی پاورشل صرفاً کلیک راست کنید، خودش محتویات Clipboard شما را پیست میکند). اکنون کافی است Enter بزنید تا عبارت Done را ببینید.
مرحله ۳ – باز کردن Component Services
به همان روشی که PowerShell را در مرحلهی دوم باز کردید، Component Services را هم باز کنید. البته لازم نیست این برنامه را با حالت مدیریتی اجرا نمایید. بعد از باز شدن برنامه به مسیر زیر بروید:
Component Services – Computers – My Computer – DCOM Config
به سمت پایین اسکرول کنید تا Runtime Broker را بیابید. برای من دو مدل RuntimeBroker وجود داشت! از کجا باید فهمید که کدام یک همان سرویسی است که در بخش خطا معرفی شده بود؟
روی یکی از آنها کلیک راست کنید و گزینهی Properties را انتخاب نمایید. در زبانهی General، بخشی به نام Application ID وجود دارد که باید با AppID پیغام خطا یکسان باشد. اگر ID پیغام خطایی که در Event Viewer دریافت میکنید ۱۰۰۱۶ است، اما بیش از یک CLSID دارد، شاید لازم باشد تا هر دو RuntimeBrokers را اصلاح کنید. برای من فقط یکی از این دو مورد مشکل داشت.
مرحله ۴ – تصحیح مجوزها
در آخر، باید مجوزها را ویرایش کنیم. از پنجرهی RuntimeBroker properties به زبانهی Security بروید.
دکمهی Edit که در بخش Launch and Activation Permissions وجود دارد باید قابل کلیک شدن باشد. اگر رنگ آن خاکستری است، اسکریپت پاورشل به درستی اجرا نشده. وقتی روی Edit کلیک میکنید، احتمالاً با پنجرهی پاپ آپی مواجه میشوید که دربارهی مجوزهای شناخته نشده به شما هشدار میدهد.
این جا نباید روی Remove کلیک کنید. صرفاً دکمهی Cancel را انتخاب نمایید. در این جا لیستی از حسابهای پیشفرض وجود دارد که ممکن است گزینهای تحت عنوان Account Unknown هم در آن وجود داشته باشد.
به هیچ عنوان این گزینه را حذف نکنید و آن را به حال خود رها کنید. حالا باید دو حساب جدید اضافه کنیم. پس روی دکمهی Add کلیک و عبارت System را تایپ و بعد روی گزینهی Check Names کلیک کنید. در آخر گزینهی OK را انتخاب نمایید تا حساب مذکور به لیست اضافه شود.
دوباره روی Add کلیک کنید و این بار عبارت Local Service را تایپ نمایید. در ادامه همان مراحل قبلی را انجام دهید.
بعد از این که هر دو حساب جدید با موفقیت اضافه شد، به نوبت روی آنها کلیک کرده و از بخش Allow تیک دو گزینهی Local Launch و Local Activation را بزنید. حالا سیستم را Restart کنید. پس از بالا آمدن مجدد کامپیوتر مشکل برطرف شده و دیگر نباید در لاگ سیستم خود چنین خطایی ببینید.