كيفية إلغاء بلدي تجميع .NET عندما لم يعد في نفس الموقع؟
-
19-08-2019 - |
سؤال
ولدي دلل الذي تم تسجيله لكوم إمكانية التشغيل المتداخل، وذلك تحت HKLM \ SOFTWARE \ فصول \ CLSID [بلدي ارشد] \ InprocServer32 [نسختي لا] \ تعليمات البرمجة الأساسية أنه يحتوي على مسار دلل مسجل. ومع ذلك، لقد إعادة ترتيب بنية المجلد بلدي حتى هذا الطريق لم يعد الصحيح. هل هناك وسيلة لإلغاء تسجيل DLL هذا من دون إعادته، ثم إلغاء تسجيل، ثم إزالة الملف مرة أخرى؟
وماذا لو لم يكن لديك هذا دلل أي أكثر من ذلك، أو لديك واحدة مع رقم إصدار مختلف فقط؟
المحلول
وأرقام إصدار مختلفة (عموما) لا يهم. طالما أن DLL أحدث يحتوي على كافة المعرفات الفريدة العمومية التي تظهر في النسخة القديمة، وسوف تكون غير مسجلة بشكل صحيح (باستخدام واحدة جديدة مع regasm، اكس). وبطبيعة الحال، إعادة تسجيل كيان التجمع من أجل إمكانية التشغيل المتداخل COM سوف تنقل بشكل صحيح مفاتيح التسجيل الضرورية.
نصائح أخرى
وبقدر ما أعرف - كل ما تحتاجه هو لتسجيل DLL في موقعه الجديد
.
يمكنك استخدام أداة MS oleview.exe للتحقق من نقاط التسجيل COM إلى الموقع الصحيح.
والمشكلة التي واجهناها مع مجرد تسجيل دلل الجديد هو عندما انها حصلت على نسخة أقل من واحد مسجل مسبقا. كنت في نهاية المطاف مع هذا في التسجيل:
HKCR\MyLib.MyClass\CLSID:(Default)=<my guid>
and
HKCR\CLSID\<my guid>:Assembly=<string containing version number>
and
HKCR\CLSID\<my guid>\InprocServer32\<version number>\ ... more details
وأعتقد أن وقت يحاول تحميل التجميع المحددة في HKCR\CLSID\<my guid>:Assembly
، لذلك كنت ترغب في محاولة لإلغاء تسجيل أن واحدا إذا أمكن ذلك.
وهذا ليس جوابا حول كيفية إلغاء ذلك، ولكن إذا كنت لا يمكن إلغاء أنني قد وجدت أنه من المفيد الحصول على وجود إزالة مفتاح لرقم الإصدار لم يعد لديك، وربما تحديث قيمة Assembly
يدويا إذا كنت تجرؤ.