كيفية إلغاء بلدي تجميع .NET عندما لم يعد في نفس الموقع؟

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

سؤال

ولدي دلل الذي تم تسجيله لكوم إمكانية التشغيل المتداخل، وذلك تحت 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 يدويا إذا كنت تجرؤ.

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