PDA

View Full Version : لیست درایورهای نصب شده روی سیستم



CodeMasterX
دوشنبه 03 اردیبهشت 1386, 23:35 عصر
این برنامه هایی رو دیدین که از درایور های نصب شده روی سیستم نسخه پشتیبان میگیرن و یه نسخه اجرایی هم می سازی ؟ دارم یه همچین برنامه ای مینویسم در ادامه همون برنامه Uninstall که قبلا گذاشته بودم.
می خوام بدونم چجوری میشه لیست سخت افزار های موجود و درایور هاشون رو بدست آورد بصورت جزئی ؟ منظور اینه که مثلا بفهمم درایور مربوط به مودم شامل چه فایل ها و داده های رجیستری هست و مسیرشون کجاست ؟

Hossein Bazyan
چهارشنبه 02 خرداد 1386, 19:06 عصر
این برنامه هایی رو دیدین که از درایور های نصب شده روی سیستم نسخه پشتیبان میگیرن و یه نسخه اجرایی هم می سازی ؟ دارم یه همچین برنامه ای مینویسم در ادامه همون برنامه Uninstall که قبلا گذاشته بودم.
می خوام بدونم چجوری میشه لیست سخت افزار های موجود و درایور هاشون رو بدست آورد بصورت جزئی ؟ منظور اینه که مثلا بفهمم درایور مربوط به مودم شامل چه فایل ها و داده های رجیستری هست و مسیرشون کجاست ؟

سلام
من یه بار به OCX ی برخورد کردم که همین کار مورد نظر شما را میکرد . دانلودش هم کردم و استفاده هم کردم اما مربوط به چند سال پیشه ( فکر کنم 2002) الان نمیدانم آنرا کجا گذاشته ام

در ضمن نرم افزار کاملش هم موجوده ( Full application ) اگه خواستی برا بفرستم

greenway
چهارشنبه 02 خرداد 1386, 23:22 عصر
این برنامه هایی رو دیدین که از درایور های نصب شده روی سیستم نسخه پشتیبان میگیرن و یه نسخه اجرایی هم می سازی ؟ دارم یه همچین برنامه ای مینویسم در ادامه همون برنامه Uninstall که قبلا گذاشته بودم.
می خوام بدونم چجوری میشه لیست سخت افزار های موجود و درایور هاشون رو بدست آورد بصورت جزئی ؟ منظور اینه که مثلا بفهمم درایور مربوط به مودم شامل چه فایل ها و داده های رجیستری هست و مسیرشون کجاست ؟



NtQuerySysInfoFunction =
(LPVOID) GetProcAddress(MyNtDLL,"NtQuerySystemInformation");

long NtQuerySysInfo (DWORD Sic,LPVOID Buffer,DWORD BuffSize,DWORD Buffdsize,LPVOID function)
{
DWORD Result;
__asm
{
push Buffdsize
push BuffSize
push Buffer
push Sic
call function
mov Result,eax
}
return Result;
}

------------------------
if (Buffer!=NULL)
{
NtQuerySysInfo(11,Buffer,0x200,0,NtQuerySysInfoFun ction);
ModuleCount = *(DWORD *) Buffer;
free(Buffer);
Buffer= (BYTE *) malloc(0x120*ModuleCount);
if (Buffer!=NULL)
{
NtQuerySysInfo(11,Buffer,0x120*ModuleCount,0,NtQue rySysInfoFunction);

for(i=0;i<0x120*ModuleCount-10;i++)
{
}
}

-- بعضی قسمتها حذف شده... اما این روش جواب می دهد.


می تونید از رجیستری هم استفاده کنید .
HKEY_LOCAL_MACHINE->CurrentControlSet->System

تصحیح :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es

فقط باید ببخشید ، بعضی از سوالها رو نمیشه با VB جواب داد. ( یا من بلد نیستم )

CodeMasterX
پنج شنبه 03 خرداد 1386, 01:03 صبح
greenway ممنون ولی اولا شما کدت رو با C نوشتی دوما آدرس رجیستری درست نبود.خودم درستش رو پیدا کردم ولی اینج جواب درستی به سوا من نیست.
بله عزیز بعضی کارها رو نمیشه با VB6 انجام داد و یا خیلی سخت میشه انجام داد.ولی اینکار نسبتا کار راحتی هست.باید اینو یادآوری کنم که درایور هایی که روی سیستم نصب میشه مسیر فایل هاشون متفاوت هست و بعضی هاشون اصلا کلید رجیستری ندارن!

greenway
پنج شنبه 03 خرداد 1386, 07:44 صبح
خوب در زمینه زبانها من بحثی ندارم ، منظورم این بود که اینجا انجمن VB هست و من نمیدونم توی VB اینکار رو چطور انجام میدن. در مورد درایورها NtQuerySystemInformation لیست کاملی از ماجولهای بارگذاری شده در حافظه رو میده . من قبلا از این روتین ها برای تشخیص درایورهای SoftIce استفاده کرده بودم و با توجه به عنوان تاپیک فکر کردم که شاید اینطوری بشه کاری رو که می خواهید انجام داد.با این تابع میشه ماجولهای بارگذاری شده رو Enumerate کرد. استفاده از رجیستری اش هم همینطور Tricky هست ، اما به احتمال زیاد گزارش های ویندوز از توی رجیستری ساخته میشه.

CodeMasterX
جمعه 04 خرداد 1386, 08:42 صبح
ممنون ولی من نمیخوام ماژول های بارگذاری شده سیستم رو بگیرم.
همه درایور ها که توی حافظه سیستم بارگذاری نمی شن (البته الزاما).
هنوز دنبالش هستم ولی چون هر درایوری فایل ها و کلید های رجیستری اش رو در محل های متفاوتی نصب میکنه جوابی پیدا نکردم.