PDA

View Full Version : Update کردن آنی(Real Time) رجیستری ویندوز



Future_Coder
پنج شنبه 17 خرداد 1386, 17:28 عصر
با سلام خدمت همه فنهای دلفی!:چشمک:
این سوال رو من جاهای مختلفی مطرح کردم ولی متاسفانه جواب درستی پیدا نکردم!
یک برنامه باید مینوشتم که کاربر هر لحظه که میخواست میتونست که درایو رو مخفی کنه . برای انجام این کار از رجیستری ویندوز کمک گرفتم و برای آشکار کردن دوباره اون هم مشکلی ندارم
برای دیدن چگونگ کار یک سری به
http://www.pctools.com/guides/registry/detail/148/ بزنید
مشکل اینه که بعد از هر پنهان کردن یا آشکار کردن باید سیستم راه اندازی مجدد بشه که این برنامه منو تقریبا بی ارزش میکنه! در یک منبعی آموزش به روز رسانی رجیستری ویندوز اینطور بود:


//update changes immediately
SystemParametersInfo (SPI_SETDESKWALLPAPER,0, nil,SPIF_SENDWININICHANGE) ;
SystemParametersInfo (SPI_SETSCREENSAVEACTIVE,0, nil,SPIF_SENDWININICHANGE) ;

قبلا اینو رو یک برنامه دیگه امتحان کرده بودم وجوب داد ولی در این برنمه کاری نمیکرد! یعنی روی اون قسمت رجیستری که من میخاستم به روز بشه بی تاثیر بود
البته یک کلک دیگر هم برای به روز کردن رجیستری هست اونم End کردن فرآیند Explorer.exe و دوباره فراخوانی کردن آن است که آن هم زیاد صورت خوشی ندارد!
آیا نظری دارید؟
---------------------------------------
Persians Are Rulerz!Persians Are Creator Of Algorithmic Method For Solving A Problem
And Now It's Honor To be A Coder!

MNosouhi
پنج شنبه 17 خرداد 1386, 18:16 عصر
لبته یک کلک دیگر هم برای به روز کردن رجیستری هست اونم End کردن فرآیند Explorer.exe و دوباره فراخوانی کردن آن است که آن هم زیاد صورت خوشی ندارد!
باید Explorer.exe راه اندازی مجدد بشه ، حالا چه با ریست کردن سیستم و چه با endtask کردن و newtask کردن Explorer.exe.

m-khorsandi
پنج شنبه 17 خرداد 1386, 18:23 عصر
سعی کن با ارسال پیغام WM_SETTINGCHANGE به تمام پنجره‌های Top Level، اونها را از تغییری که انجام شده با خبر کنی :


SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);

vcldeveloper
جمعه 18 خرداد 1386, 09:29 صبح
محمد جان، فکر نکنم با WM_SETTINGCHANGE مشکل حل بشه چون این پیغام زمانی را فقط زمانی ارسال می کنند که یکی از پارامترهای SystemParametersInfo تغییر کرده باشه.

Update کردن آنی(Real Time) رجیستری ویندوزرجیستری ویندوز بالافاصله آپدیت میشه، مشکل از برنامه ایی هست که باید اطلاعات را از رجیستری بخونه (در اینجا Explorer.exe) که بطور متناوب این مقادیر را از رجیستری نمی خونه و باید یکبار ریست بشه تا در زمان شروع به کارش مقادیر جدید را از رجیستری بخونه.

Future_Coder
جمعه 18 خرداد 1386, 09:40 صبح
حالا که راه اندازی دوباره Explorer برای فراخونی دوباره اطلاعات از رجیستری لازمه به نظرتون چه راهه حله دیگه ای برای مخفی کردن یک درایو در Explorer وجود داره؟


رجیستری ویندوز بالافاصله آپدیت میشه، مشکل از برنامه ایی هست که باید اطلاعات را از رجیستری بخونه (در اینجا Explorer.exe) که بطور متناوب این مقادیر را از رجیستری نمی خونه و باید یکبار ریست بشه تا در زمان شروع به کارش مقادیر جدید را از رجیستری بخونه.
جالب اینجاست بعد از مخفی کردن راه اندازی مجدد لازم نیست

Hamid_PaK
جمعه 18 خرداد 1386, 16:17 عصر
فکر نکنم با WM_SETTINGCHANGE مشکل حل بشه
حاج علی آزمایش کردم جواب داد ، فقط یه کلید F5 هم بعد از ارسال تابع تغییرات نیاز هست ، همین .

یا حق ...