PDA

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



mskm100
چهارشنبه 21 شهریور 1386, 13:05 عصر
آقا باباک زحمت کشیده بودن و سورس یه برنامه رو گذاشته بودن که با کمک رجیستری لیست برنامه های نصب شده روی ویندوز رو می داد من خواستم یه کاری کنم که وقتی روی برنامه های مو جود تو اون لیست کلیک کردم برنامه باز بشه برای همین رفتم سراغ رجیستری و دیدم همون جا که اسم برنامه هست یه قسمتی هم هست به نام display icon که مسیر فایل exe اونجاست و تونستم یه برنامه بنویسم که اون مسیر رو بگیره ولی مشکل اینجاست که بعضی از برنامه ها اصلا یه همچین چیزی ندارن و بعضی ها شونم اصلا تو اون قسمت هیچ آدرسی برای فایل exe ندارن حالا از دوستان می خوام اگه اطلاعاتی در این زمینه دارن راهنمایی کنن و در ضمن بگن چطور و از کجا می شه شکل icon اون برنامه رو پیدا کرد .

Will_Smith
چهارشنبه 21 شهریور 1386, 14:02 عصر
یه راه دیگه استفاده از مسیر Program Files هست

Inprise
چهارشنبه 21 شهریور 1386, 17:26 عصر
راه حل اصولی استفاده از WMI است . کلاس Win32_Product دقیقا به همین منظور در نظر گرفته شده . MSDN رو ببین .

mskm100
چهارشنبه 21 شهریور 1386, 19:28 عصر
تا اونجایی که می دونم MSDN برای vb بود
اگه دلفی هم MSDN داره بگید کجا باید برم .

Mahmood_M
چهارشنبه 21 شهریور 1386, 21:22 عصر
لیست UnInstall برنامه ها رو می تونید از رجیستری بخونید ...
به مسیر زیر برید :
'Software\Microsoft\Windows\CurrentVersion\Uninsta ll'
توی این مسیر لیست برنامه ها هست ، هر برنامه ای یک مقدار String در رجیستری داره به نام UnInstallString که مسیر فایل UnInstall اون درش هست ، میتونید از اون بخونید ...
با یه حلقه تمام UnInstallString های موجود در هر کلید در مسیر بالا رو بخونید و لیستتون رو درست کنید ...
اگه کامپوننتهای JVCL رو نگاه کنید یه لیست باکس به همین منظور داره و اون از همین روش استفاده میکنه ...
درضمن :

تا اونجایی که می دونم MSDN برای vb بود
اگه دلفی هم MSDN داره بگید کجا باید برم .
MSDN تنها برای VB نیست ، از توابع و دستورات اون ( تقریبا ) در هر زبانی می تونید استفاده کنید ( از جمله دلفی ) ...

موفق باشید ...

mskm100
چهارشنبه 21 شهریور 1386, 22:26 عصر
آقا محمود
در مسیری که شما معرفی کرده اید لیست برنامه ها رو می شه بدست آورد ولی در uninstall string فقط مسیر فایل uninstall اون برنامه هست و مسیر فایل exe تو اون مسیر نیست همونطور که گفتم در display icon تو همون مسیر ، مسیر فایل exe هست ولی همه برنامه ها اونو ندارن

vcldeveloper
پنج شنبه 22 شهریور 1386, 01:59 صبح
راه حل اصولی استفاده از WMI است . کلاس Win32_Product دقیقا به همین منظور در نظر گرفته شده قاعدتا باید Win32_Product این اطلاعات را بطور کامل برگردونه، اما در عمل فقط اطلاعات بعضی از نرم افزارهای نصب شده را برمی گردونه!
خود Add\Remove Programs ویندوز هم از همون لیست Uninstall در رجیستری استفاده میکنه:
How Add/Remove Programs get the size and other Information (http://blogs.msdn.com/oldnewthing/archive/2004/07/09/178342.aspx)

Inprise
پنج شنبه 22 شهریور 1386, 02:54 صبح
قاعدتا باید Win32_Product این اطلاعات را بطور کامل برگردونه، اما در عمل فقط اطلاعات بعضی از نرم افزارهای نصب شده را برمی گردونه!
خود Add\Remove Programs ویندوز هم از همون لیست Uninstall در رجیستری استفاده میکنهاون کلاس اطلاعات برنامه های "نصب شده" رو برمیگردونه __ نصب شده با اسکریپت MSI و سرویس Windows Installer __ و طبعا اگر "نصب" با چنین روشی انجام نشده باشه یا اسکریپت کامل نباشه این اطلاعات ناقصه . الان اینستالرهای متداول مثل نگارشهای جدید Wise و InstallAware و InstallShield همگی از MSI استفاده میکنن . در مورد بقیه اینستالرها نمیدونم ، اما طبعا بقول همون وبلاگ حدس زدنی و سعی و خطا و ...هست .

mskm100
پنج شنبه 22 شهریور 1386, 12:30 عصر
آقای کشاورز از شما ممنونم ولی قبلا عرض کردم که آقا بابک یه سورسی گذاشته بودن که لیست برنامه های نصب شده روی ویندوز را می داد اما من می خوام که وقتی روی اون برنامه ها کلیک کردم اون برنامه ها اجرا بشن و مسیر فایل uninstall اونا رو نمیخوام . می خوام یه چیزی مثل all programs درست کنم.

Mahmood_M
پنج شنبه 22 شهریور 1386, 12:39 عصر
آقای کشاورز از شما ممنونم ولی قبلا عرض کردم که آقا بابک یه سورسی گذاشته بودن که لیست برنامه های نصب شده روی ویندوز را می داد اما من می خوام که وقتی روی اون برنامه ها کلیک کردم اون برنامه ها اجرا بشن و مسیر فایل uninstall اونا رو نمیخوام . می خوام یه چیزی مثل all programs درست کنم.
لیست و مسیر فایل اجرایی برنامه ها رو می تونید از مسیر زیر در رجیستری پیدا کنید :
'Software\Microsoft\Windows\CurrentVersion\App Patchs'

البته در این مسیر تنها فایلهای اجرایی نیستند ، بلکه DLL ها و Applet های کنترل پنل هم هستند ...

موفق باشید ...

vcldeveloper
جمعه 23 شهریور 1386, 00:42 صبح
من می خوام که وقتی روی اون برنامه ها کلیک کردم اون برنامه ها اجرا بشن و مسیر فایل uninstall اونا رو نمیخوام
اون لینک وبلاگ رو هم دیدید؟

mskm100
جمعه 23 شهریور 1386, 23:41 عصر
آقای کشاورز اگه درست فهمیده باشم ویندوز از روی مسیر فایل uninstall به مسیر فایل exe چون تا یه جاهایی به اون مسیر شبیه ولی با توجه به گفته های این وبلاگ و با توجه به پست آخر آقا محمود فکر کنم بهتره apppath اون عملیاتی رو که در وب لاگ گفته انجام بدیم یعنی در apppath به دنبال اسامی مشابه با اسامیی که در Software\Microsoft\Windows\CurrentVersion\Uninstal l\
پیدا کردیم بگردیم . چون فکر کنم بعضی از برنامه ها هم ممکن فایل uninstall نداشته باشن