PDA

View Full Version : سوال: سوال در مورد رجيستري ( چك كردن وجود يك كليد )



debugger
دوشنبه 17 فروردین 1388, 10:11 صبح
چطور بايد چك كنيم ببينيم اين كليد تو رجيستري هست يا نه ؟ اگر نبود اونو ايجاد كنه

من ميخوام برنامه براي اولين بار كه اجرا ميشه چك كنه ببينه اين كليد تو رجيستري هست يا نه ؟ اگر نبود اونو ايجاد كنه




RegistryKey k = Registry.CurrentUser.CreateSubKey(@"upkeeper");
k.SetValue("mypassword", "");

shytonak
دوشنبه 17 فروردین 1388, 10:28 صبح
بايد از if استفاده كني و كليدي رو كه قراره باز كنه ( چك كنه هست) رو برابر با null قرار بده اگه null بود بگو ايجاد كنه.

debugger
دوشنبه 17 فروردین 1388, 14:47 عصر
بايد از if استفاده كني و كليدي رو كه قراره باز كنه ( چك كنه هست) رو برابر با null قرار بده اگه null بود بگو ايجاد كنه.




if( RegistryKey k = Registry.CurrentUser.CreateSubKey(@"upkeeper")==null&&k.SetValue("mypassword", "")==null;)
{
RegistryKey k = Registry.CurrentUser.CreateSubKey(@"upkeeper");
k.SetValue("mypassword", "");
}

اينطوري نوشتم كار نكرد.

من ميخوام چك كنه اگر اين مسير در رجيستري نباشه اونو بسازه و وقتي ديد هست . هيچ كاري نكند

اينم مسير



[HKEY_CURRENT_USER\upkeeper]
"mypassword"=""

http://y4shar.parsaspace.com/help1.jpg

mirage041
دوشنبه 17 فروردین 1388, 18:35 عصر
دوست عزیز نمی دونم می خوای چیکار کنی ولی یک سر به این پست بزن اگه حل شد و تونستی یک کاری بکنی به ما هم کمک کن؟
http://barnamenevis.org/forum/showthread.php?t=145731

rezatati
دوشنبه 17 فروردین 1388, 19:11 عصر
این هم راه حل


RegistryKey regkey = Registry.CurrentUser.OpenSubKey(@"upkeeper");
if (regkey != null)
{
string pass = regkey.GetValue("mypassword").ToString();
//کلید وجوددارد
}
else
{
//create key
regkey=Registry.CurrentUser.CreateSubKey(@"upkeeper",RegistryKeyPermissionCheck.ReadWriteSubTree);
regkey.SetValue("mypassword", "reza");

}

rezatati
دوشنبه 17 فروردین 1388, 19:14 عصر
البته باید در آخر هم دستور regkey .Flush(); رو اجرا کنی تا مطمئن بشی که داده ها نوشته شدند
برای اطلاعات بیشتر به این ادرس مراجعه کن

http://www.dijksterhuis.org/modifying-the-windows-registry-in-c/

debugger
سه شنبه 18 فروردین 1388, 09:47 صبح
رضا جان دستت درد نكنه . مشكلم حل شد . كد بسار عالي بود

ميشه توضيح بدي اين @ چي كار مي كنه تو كد زير : چون بعضي جاها اينو نمي زارن ؟ دليلش چيه ؟




RegistryKey regkey = Registry.CurrentUser.OpenSubKey(@"upkeeper");

debugger
سه شنبه 18 فروردین 1388, 10:06 صبح
دوست عزیز نمی دونم می خوای چیکار کنی ولی یک سر به این پست بزن اگه حل شد و تونستی یک کاری بکنی به ما هم کمک کن؟
http://barnamenevis.org/forum/showthread.php?t=145731

به اين لينك نگاه كردم . منم تقريبا همچين كاري كردم

من يه برنامه نوشتم كه براي وارد شده به برنامه اجبارا بايد پسورد وارد كني . چون اين برنامه اطلاعات شخصي و مهم افراد را نگه ميداره . هيچ كس بجز شخصي كه از نرم افزار استفاده مي كنه نبايد بتونه به برنامه دسترسي داشته باشه.

در اولين بار كه شخص برنامه را اجرا مي كنه كادر پسورد ظاهر ميشه و شخص براي اولين بار بدون پسورد وارد برنامه ميشه و در قسمت change password برنامه يه پسوردي براي خودش ثبت مي كنه . اين پسورد تو رجيستري ثبت ميشه و دفعه بعد كه شخص ميخواد وارد برنامه بشه پسورد خودش را ميزنه.

مشكل من اين بود كه چون من پسورد را با ادرسي كه رجيستري بود مقايسه مي كردم
براي شخصي كه براي اولين بار از برنامه استفاده مي كنه تو رجيستري ويندوزش اين مسير نبود. و بايد هنگاه لود برنامه اين مسير ساخته ميشد. كه اين كار هم به كمك كد رضا حل شد

البته پسورد را من hash مي كنم و تو رجيستري قرار ميدم . و پسوردي كه كاربر وارد مي كنه ايتدا هش ميشه و با هش ي كه تو رجيستري هست مقايسه ميشه. اگر درست بود وارد برنامه ميشه

قفل نرم افزاري هم به كمك اين روش ميشه نوشت . كه الان من مي تونم راحت اين كار را بكنم

rezatati
سه شنبه 18 فروردین 1388, 10:13 صبح
کاربرد @ در اینجا اینه که اگه در آدرس کلید از کاراکتر \ استفاده بشه به جای اینکه دوتا نوشته بشه یه دونه نوشته می شه مثلا دو رشته زیر در #c برابرند

"rt\\kh"
برابر است با رشته "rt\kh"@

rezatati
سه شنبه 18 فروردین 1388, 10:14 صبح
البته یادم رفت بگم من فکر می کنم این یکی از کاربردهای @ بود و شاید کاربرد دیگری هم داره که اگه از دوستان بلدند بگن تا ما هم یاد بگیریم