আমি কীভাবে জানতে পারি যে কোনও ডিএলএল নিবন্ধিত হয়েছে?


28

আপনি যখন পুরানো মেশিনে (উইন্ডোজ এক্সপি) ডিএলএল নিবন্ধন করছেন, তখন রেজিস্ট্রভ সর্বদা বলে যে নিবন্ধনটি সফল ছিল। ব্যবহারকারীর নিবন্ধনের অনুমতি না থাকলেও এটি ঘটে।

Dll এর নাম সহ, সেখানে একটি কমান্ড রয়েছে যে আমি কোনও ডিএলএল ইনস্টল করা আছে কিনা তা যাচাই করতে কমান্ড লাইনে চালাতে পারি?

উত্তর:


22

আমি এই লিঙ্কটি পেয়েছি: একটি ডিএলএল নিবন্ধিত হয়েছে কিনা তা আমি কীভাবে বলতে পারি? :

ডিএলএল নিবন্ধন স্বেচ্ছাসেবী ক্রিয়াকলাপকে ঘিরে রাখতে পারে তা বিবেচনা করে, কোনও স্বেচ্ছাসেবী ডিএলএল-এর জন্য নিবন্ধকরণ হয়েছে কিনা তা নির্ধারণের কোনও সাধারণ-উদ্দেশ্য উপায় নেই।

কোনও ডিএলএল নিবন্ধিত হয়েছে কিনা তা নির্ধারণের জন্য আপনাকে ডোমেন-নির্দিষ্ট জ্ঞান আনতে হবে। যদি আপনি জানেন যে কোনও ডিএলএল একটি নির্দিষ্ট সিএলএসআইডির সাথে কোনও COM অবজেক্ট নিবন্ধভুক্ত করে, আপনি পরীক্ষা করতে পারেন যে সিএলএসআইডি প্রকৃতপক্ষে নিবন্ধিত হয়েছে কিনা।

ঠিক আছে, এটি অসম্ভব, তবে ডিএলএলরা সাধারণত রেজিস্টারে একটি এন্ট্রি তৈরি করে নিবন্ধন করে। একটি কার্যনির্বাহীটি হ'ল:

  1. প্রথমে আপনাকে ডিএলএল এর COM GUID আবিষ্কার করতে হবে। আপনার যদি এমন একটি মেশিন থাকে যেখানে এটি ইতিমধ্যে নিবন্ধভুক্ত রয়েছে তবে আপনি এটি করতে পারেন:
    1. রিজেডিট খুলুন এবং আপনার ডিএলএল ফাইল নাম অনুসন্ধান করুন
    2. যদি এটি নিবন্ধীকৃত হয় তবে আপনি টাইপলিবের নীচে থাকা একটি কীতে ফাইলের নাম খুঁজে পাবেন। কীটি দেখতে পাবেন: {9F3DBFEE-FD77-4774-868B-65F75E7DB7C2}
  2. এখন আপনি ডিএলএল জিইউডি জানেন, আপনি ডস প্রম্পটে এই আদেশটি দিয়ে এটি অনুসন্ধান করতে পারেন: reg query HKCR\CLSID | find /i "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"

আরও ভাল উত্তর আমাকে রেজিস্টার করার আগে ফাইল থেকে সরাসরি জিইউডি সন্ধান করার অনুমতি দেয়। কমপক্ষে এইভাবে আপনি ইনস্টল করতে একটি স্ক্রিপ্ট তৈরি করতে পারেন এবং এটি সফলভাবে ইনস্টল হয়েছে কিনা তা যাচাই করতে।


4
আপনাকে আসলে আগেই জিইউডি জানার দরকার নেই। ডিএলএল ফাইলনামের জন্য রেজিস্ট্রি অনুসন্ধান করার জন্য একটি সহজ পদ্ধতির উপায় হ'ল: যদি সেই নামটি এই জিইডি-র কীগুলির মধ্যে যে কোনও একটিতে তালিকাভুক্ত হয়, তবে হ্যাঁ, ডিএলএল সত্যই নিবন্ধিত হয়েছে।
ম্যাসিমো

@ মাসিমো: তবে আমি কীভাবে এটি অনুসন্ধান করব? কোন চাবি? এটা তোলে ভুলভাবে শেল ইতিহাসে প্রদর্শন করতে পারেন (যেমন, একটি অ্যাডমিন ছাড়া রেজিস্টার করার চেষ্টা)
Neves

HKCR এর অধীনে, অবশ্যই :) বা খুব কমপক্ষে HKLM এর অধীনে। ব্যবহারকারী-নির্দিষ্ট জিনিস (শেলের ইতিহাসের মতো) HKCU এর অধীনে।
ম্যাসিমো

@ মাসিমো: আপনি যদি এটির সন্ধানের জন্য শেল কমান্ডের সাহায্যে একটি উত্তর এখানে রাখেন, আমি এটিকে সঠিক উত্তর হিসাবে চিহ্নিত করব।
নেভেজ

এটি আপনার মতোই: REG QUERYডিএলএল ফাইলের নাম সন্ধান করতে ব্যবহার করুন।
ম্যাসিমো

13

আমার নির্দিষ্ট নামের একটি ডিএলএল নিবন্ধিত আছে কিনা তা যাচাই করা দরকার এবং আমি আমার বিএটিতে এই আদেশটি ব্যবহার করেছি:

reg query HKLM\SOFTWARE\Classes /s /f whatever.dll
if errorlevel 1 goto DLL_MISSING

যদি ত্রুটি-বিহীন লেবেলে নিয়ন্ত্রণ প্রেরণ করা থাকে তবে যখন reg queryকিছুই পাওয়া যায় নি। আপনি যেখানে অনুসন্ধান করবেন সেখানে রেজিস্ট্রিটির অংশটি পরিবর্তন করতে হবে (আমার ক্ষেত্রে HKLM'..., আরও সুনির্দিষ্ট পথটি দ্রুততর, অন্যথায় এটি সত্যই বেশি সময় নেয়)।

প্রয়োজনে আউটপুট প্রক্রিয়া করা যায়, প্রবেশের জন্য জিইউডি পাওয়া যায়, তবে এটি রেগ কোয়েরি কমান্ডের বাইরে নয়।


0

কমান্ড লাইন থেকে ডিএলএল-এর জন্য রেজিস্ট্রি এন্ট্রিগুলি ( এবং optionচ্ছিকভাবে COM অবজেক্টস) সন্ধানের জন্য, @ ভার্জো 47 এবং উত্তরগুলির উত্তরগুলির সংমিশ্রণটি আমার পক্ষে সবচেয়ে ভাল কাজ করেছে।

  1. ডিএলএল নাম যুক্ত রেজিস্ট্রি এন্ট্রি সন্ধান করুন। এই এন্ট্রিগুলি সাধারণত জিইউইডিগুলি তাদের কী হিসাবে ব্যবহার করে।

    রেগ কোয়েরি এইচকেএলএম OF সফ্টওয়্যার \ ক্লাস / এস / এফ যাই হোক। ডিএল

  2. ( alচ্ছিক) এই জিইউডিগুলির জন্য নিবন্ধিত COM অবজেক্টগুলি সন্ধান করুন। (ব্যবহারের /s /f "{GUID}"চেয়ে দ্রুত হওয়া উচিত | findstr /i "{GUID}"And | find /i "{GUID}"এবং এটি টাইপো হিসাবে উপস্থিত হবে (তবে আমি এখনও সার্ভারফল্টে মন্তব্য লিখতে পারি না)))

    রেগ কোয়েরি এইচকেসিআর \ সিএলএসআইডি / এস / এফ "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.