استفاده از dll بدون رجیستر کردن انها

سلاموخسته نباشید به ویژه خدمت استادمون
the_king

من تازه شروع به ساختن dll با ویژوال بیسیک کردم.اما مشکلی دارم اون هم این هست که من نرمافزارهایی دیدم که کنار فایل اجرایشون فایل dll وجود داره و از اون استفاده میکنن بدون نیاز به رجیستر کردن فایل dll.الان من با اکتیوکس دی لل dll ساختم اما برای اینکه ازش استفاده کنم باید رجیستر بشه.الان چه طوری دی لل بسازم که نیاز به رجیستر نداشته باشه.یا ترفند دیگه.مرسی از توجهتون به سوالات.من اولش کلی سرچ میکنم.
 

the_king

مدیرکل انجمن
سلاموخسته نباشید به ویژه خدمت استادمون
the_king

من تازه شروع به ساختن dll با ویژوال بیسیک کردم.اما مشکلی دارم اون هم این هست که من نرمافزارهایی دیدم که کنار فایل اجرایشون فایل dll وجود داره و از اون استفاده میکنن بدون نیاز به رجیستر کردن فایل dll.الان من با اکتیوکس دی لل dll ساختم اما برای اینکه ازش استفاده کنم باید رجیستر بشه.الان چه طوری دی لل بسازم که نیاز به رجیستر نداشته باشه.یا ترفند دیگه.مرسی از توجهتون به سوالات.من اولش کلی سرچ میکنم.

پسوند فایل DLL مختص ActiveX ها نیست، همانطور که همه ActiveX ها هم DLL نیستند. مخصوصا در مورد زبان هایی مثل ++C خیلی از کتابخانه ها پسوند DLL دارند اما
اینها ActiveX نیستند و طبیعتا نیازی هم به ثبت شدن در Registry ویندوز ندارند.

وقتی شما در یک پروژه ای از ActiveX تون استفاده می کنید مسیر یا اسم فایل dll ذخیره نمیشه، بلکه از شماره شناسایی
ActiveX تون که بهش GUID یا Globally Unique Identifier می گویند استفاده میشه. از اونجایی که موقع اجرای برنامه
از اون ActiveX صرفا GUID مشخصه، ویندوز در Registry ویندوز می گرده تا ببینه اون GUID برای چه فایلی و در چه محلی ثبت شده.

شما می توانید برای فایل dll و exe پروژه تون اطلاعات Manifest اضافه کنید تا دیگه ویندوز XP (و جدیدتر از آن) سراغ Registry نره و نیازی به ثبت کردن
ActiveX در Registry ویندوز نباشه. Manifest فایلهای متنی با فرمت XML ئه که می توانید با هر ویرایشگر متنی بازش کنید و یا بسازید.
اما نوشتن دستی اش به دقت زیادی احتیاج داره و با کوچکترین اطلاعات اشتباه کار نمی کنه. لذا توصیه می کنم که برای ActiveX هایی که با
ویژوال بیسیک کلاسیک 6 می سازید Manifest رو با ابزار regsvr42 بسازید که پیوست این پست شده :
مشاهده پیوست regsvr42_tool.zip

فرض کنیم که شما یک Project1.dll ای ساخته اید که می خواهید در Project2.exe ازش استفاده کنید.
در درایو :C یک پوشه مثلا با نام ABC بسازید، که می شود مسیر C:\ABC و داخل اون پوشه سه تا فایل Project1.dll و Project2.exe و regsvr42.exe را کپی کنید.
حالا یک پنجره Command Prompt باز کنید (ترکیب کلیدی کلید ویندوز + کلید R را فشار دهید (
WinR.gif
) تا پنجره Run باز بشه، عبارت cmd را بنویسید و OK کنید)
دو دستور زیر رو در پنجره Command Prompt تایپ کنید و در انتهای هر سطر کلید Enter را فشار دهید، فرقی بین حروف بزرگ و کوچک نیست :
کد:
[SIZE=3]
CD /D C:\ABC
REGSVR42 -client:[B][COLOR="#0000FF"]Project2.exe[/COLOR][/B] [B][COLOR="#0000FF"]Project1.dll[/COLOR][/B]
[/SIZE]
دستور برای Project2.exe و Project1.dll نوشته شده که می توانید آنها را مطابق با اسامی فایل های خودتان تغییر دهید.
پنجره Command Prompt را ببندید یا دستور exit را داخلش اجرا کنید.

حالا فایل های Project1.sxs.manifest و Project2.exe.manifest در آن پوشه ایجاد شده اند. فایل Project1.sxs.manifest را با NotePad ویندوز یا هر ویرایشگر متنی دیگری باز کنید و سطری
با متن ""=proxyStubClsid32 را داخلش بیابید، مقدارش را مطابق سطر زیر تغییر دهید :
کد:
[SIZE=3]
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
[/SIZE]

مادامی که آن دو فایل Manifest در کنار dll و exe مورد نظر هستند و تغییری نکرده اند برای اجرای برنامه نیازی به ثبت شدن dll در Registry ویندوز های XP به بعد نیست.

مشاهده پیوست regsvr42_tool.zip

regsvr42: Generate SxS Manifest Files from Native DLLs for Registration-Free COM
 
کلی شرمندم کردی.من 21 سایت خارجی و ایرانی بازدید کردم اصلا راهنمایی های شما نبود توش.اجازه بدین کمی در مورد فایلهای مثل Manifest که گفتین سرچ کنم تا اگه سوال برام موقع کار پش اومد بتونم درست سوال کنم.پس نتیجه همه این کارها این میشه که من فایل اجرایم روبه هر کی بدم رو هر سیستمی اجرا بشه دیگه چیز اضافه نخواد.
باز م ممنون شرمنده کردی.شما یک استاد تمام هستین علتشم این هست که اونقدر باهوشین میدونین سوال کننده بعدا به چه مشکلاتی برخورد میکنه پس جواب رو با حاشیه و جوانب ها میگین.دعا میکنم همیشه شادو موفق باشین
 

جدیدترین ارسال ها

بالا