PDA

View Full Version : سوال: متغییر string ثابت برای همیشه



mohsen-unique
سه شنبه 30 مهر 1387, 18:25 عصر
اقا من یه سوال داشتم می خواستم ببینم ایا می شه توی سی شارپ یه متغییر از نوع String تعریف کرد و مثلا مقدار اون رو برابر با salam بذاریم و وقتی برنامه رو اجرا می کنیم این مقدار رو تغییر بدیم به khobi حالا می شه بدون اینکه درجایی خارج از برنامه چیزی رو ذخیر کنیم ای متغییر برای همیشه و روی هر سیستمی که برنامه اجرا می شه همون مقدار khobi رو داشته باشه ؟:افسرده:
من این رو برای پسورد گذاری روی برنامه ها می خوام اگه ممکنه منو راهنمایی کنید.:چشمک::لبخندساده:

majid325
سه شنبه 30 مهر 1387, 18:41 عصر
بايد از ديتابيس استفاده بكني، يا حداقل تو يه كليد ريجستري يا يه فايل txt بنويسي ! اين متقييري كه ميخواي نيست ، البته تو Config خود app ميتوني بنويسي ولي اونم آخر سر تو ريجستري ذخيره ميكنه.
بايد براي عدم خوندن مقادير نوشته شده ، بتوني اونها رو با يه الگوريتم هش كني.

mohsen-unique
سه شنبه 30 مهر 1387, 19:06 عصر
اخه می خوام فقط توی خود فایل exe برنامه باشه نه جای دیگه

mohammad272005
سه شنبه 30 مهر 1387, 19:09 عصر
یه راهش همونه که دوست خوبم مجیدجان گفت. اگه ارزش داشته باشه می تونی از وب‏سرویس هم استفاده کنی. واسه یه متغیر ساده، وب‏سرویس یه خورده زیادیه.

mohsen-unique
چهارشنبه 01 آبان 1387, 10:17 صبح
با اون هم نمی شه چون باید در این صورت به اینترنت وصل باشم که امکانش نیست

pars.engineer
چهارشنبه 01 آبان 1387, 15:50 عصر
ببينيد فايل Exe توسط كامپايلر ايجاد مي شود و وقتي شما آن را در سيستم ديگري اجرا مي كنيد، دوباره كامپايل نخواهد شد. پس بديهي است كه براي اينكه بتوان مقدار يك متغير را در فايل Exe تغيير داد بايد آن را مجددا كامپايل نمود.(كه عملا اين مورد غير ممكن است و غير منطقي است)، خود ويندوز نيز براي اعمالي از اين قبيل از روش ثبت در رجيستري استفاده مي كند.

اما در مورد اينكه مي خواهيد پسورد را ذخيره نماييد با تائيد پست هاي دوستان مي توانيد از روش هاي زير به ترتيب اولويت استفاده نماييد.
1) اگر نرم افزار شما داراي ديتا بيس است بهترين راه ساختن يك جدول براي نگهداري UserName و Password است. ولي اگر فاقد ديتابيس است اين روش پيشنهاد نمي شود.
2) استفاده از متغيرهاي Setting خود دات نت كه در فايل Config ذخيره مي شوند.
3) استفاده از يك فايل (مثلا txt) براي نگهداري مقدار مورد نظر.
4) و ...

نكته مهم اين كه در همه موارد گفته شده براي اينكه كاربر نتواند به داده هاي شما دسترسي داشته باشد، بايد آن را هش نماييد.

موفق باشيد.

mohammad272005
پنج شنبه 09 آبان 1387, 03:20 صبح
با اون هم نمی شه چون باید در این صورت به اینترنت وصل باشم که امکانش نیست
نه دوست من. لزومی نداره. فقط کافیه تو یه LAN باشید.

Felony
پنج شنبه 09 آبان 1387, 05:48 صبح
من تو #C وارد نیستم ولی تو دلفی میشد یه استریم به برنامه بفرستی و در خود exe برنامه ذخیره کنی ، شاید در #C هم بشه ...

مهران رسا
پنج شنبه 09 آبان 1387, 06:16 صبح
من تو #C وارد نیستم ولی تو دلفی میشد یه استریم به برنامه بفرستی و در خود exe برنامه ذخیره کنی ، شاید در #C هم بشه ...

درسته ؛ در VB هم میشه با استفاده از Property ها عملی مشابه این انجام داد :




Set PropBag = New PropertyBag
PropBag.WriteProperty "Value1", "Salam"

pars.engineer
پنج شنبه 09 آبان 1387, 19:46 عصر
درسته ؛ در VB هم میشه با استفاده از Property ها عملی مشابه این انجام داد :



کد:
Set PropBag = New PropertyBagPropBag.WriteProperty "Value1", "Salam"



من فكر نمي كنم اينطور باشد.(البته مطمئن نيستم)، چون چنين چيزي منطقي نيست.
در مورد VB تا جايي كه يادم هست، Property ها اطلاعات رو درون رجيستري ذخيره ميكنند.
به آدرسهاي زير نگاهي بياندازيد:



HKEY_CURRENT_USER\Software\Setting VB and VBA Program




HKEY_CURRENT_USER\Software\VB And VBA Program \KeyName\Setting


البته مطمئن نيستم درست باشد.

Felony
جمعه 10 آبان 1387, 05:54 صبح
100 % توی #C هم این امکان داره مگه میشه که #C از استریم پشتیبانی نکنه ؟