PDA

View Full Version : ذخیره تغییرات در App.Config



مهدی رحیم زاده
سه شنبه 13 بهمن 1388, 14:34 عصر
سلام
من می خوام که یک سری تغییرات رو توی App.Config ذخیره کنم ، برای این کار هم از این کد استفاده کردم:

System.Configuration.ConfigurationSettings.AppSett ings.Set("ServerName", IPtextBox.Text);
تا وقتی برنامه در حال اجراست درست کار می کنه ، اما بعد از اینکه برنامه رو ببندی و دوباره اجرا کنی ، دیگه تغییرات رو نگهداری نکرده؟
ممنون میشم بگید چکار کنم.
با تشکر

FastCode
سه شنبه 13 بهمن 1388, 15:06 عصر
توی مشخصات فایل config توی سورس برنامتون (توی solution explorer) باید پروپرتی Copy To Output Directory رو مساوی Copy If Newer قرار بدید.
امیدوارم مشکل شما رو درست حدس زده باشم.:خجالت:

مهدی رحیم زاده
سه شنبه 13 بهمن 1388, 15:57 عصر
اینا رو هم تغییر دادم اما بازم نشد!

مهدی رحیم زاده
سه شنبه 13 بهمن 1388, 22:48 عصر
دوستان اصلا روش ذخیره این اطلاعات همینه؟

iranrose63
چهارشنبه 14 بهمن 1388, 08:03 صبح
اگه درست متوجه منظورت شده باشم مي توني از روشي كه hdv212 تو يكي از پستها گفته بود استفاده كني

در منوی Project در VS2005 آخرین گزینه یعنی ProjectName Properties ... رو انتخاب کن، در پتجره ی جدید، در قسمت چپ، روی setting کلیک کن،با یه جدول تقریبا خالی روبرو میشی که آماده وارد کردن متغیر های شما و مقدار آنهاست،نام متغیر رو وارد کن، نوعش رو مشخص کن، Scope رو روی User ست کن (اگه روی Application ست کنی نمیتونی در برنامه مقدارش رو عوض کنی)، و در آخر Value رو در قسمت مربوطه وارد کن، حالا از طریق کد زیر میتونی به مقدار متغیری که ساختی دسترسی پیدا کنی :
string varName = projectNameSpace.Properties.Settings.Default.varia bleName;
از طریق این کد هم میتونی مقادیر رو در app.config ذخیره کنی :
projectNameSpace.Properties.Settings.Default.varia bleName = varName;
projectNameSpace.Properties.Settings.Default.Save( );

در همون قسمت ProjectName Properties > Setting در قسمت بالای جدول یه دکمه ای هست به نام Sunchronize که وقتی روش کلیک میکنی، تمام مقادیری که در app.config ذخیره شده اند رو به حالت پیش فرضی که براش تعیین کردی میبره،

Sajjad.Aghapour
چهارشنبه 14 بهمن 1388, 17:19 عصر
مهدی جان سلام
ConfigurationSettings به گفته مایکروسافت دیگه منسوخ شده .به جای اون میتونی از ConfigurationManager استفاده کنی.
نحوه استفاده از اون هم تو msdn به طور کامل توضیح داده شده....

موفق باشی/

programer1389
شنبه 11 اردیبهشت 1389, 14:30 عصر
سلام
امکان داره یک نمونه کد یا لینک در مورد تغییر در فایل app.config که در مورد ConfigurationManager باشه بهم بدین
یعنی میخواهم این کد زیر رو بوسیله برنامه بتونم تغییر بدم مثلا ip یا پسورد ورود به سرور

<add name="myconn" connectionstring="data source=192.168.0.1;inital catalog=mydb";...>

programer1389
یک شنبه 12 اردیبهشت 1389, 08:15 صبح
سلام
کسی نمیخواهد کمکم کنه

اَرژنگ
یک شنبه 12 اردیبهشت 1389, 08:24 صبح
سلام
کسی نمیخواهد کمکم کنه
چیزی که میپرسید معمولی نیست، میشه یک جواب داد که استفاده ازش مشکلاتی دیگر ایجاد کنه.
یا هم اینکه چرا فکر میکنید که به تغییر و ذخیره کردن کانکشن استرینگ نیاز دارید؟ نام
کاربر و پسورد را که نمیخواهید ذخیره کنید؟

programer1389
یک شنبه 12 اردیبهشت 1389, 10:47 صبح
چرا اتفاقا میخواهم نام کاربرورمز رو Encrypt کنم با این کد

Configuration config = ConfigurationManager.OpenExeConfiguration(Configur ationUserLevel.None);
config.ConnectionStrings.SectionInformation.ForceS ave = true;
config.ConnectionStrings.SectionInformation.Protec tSection("RsaProtectedConfigurationProvider");
config.Save();
و تو برنامم ازش استفاده کنم دلیل تغییر در رمز عبور و نام کاربر و همچنین نام سرور اینه که برنامه بتونه با چند سرور مختلف کار کنه
البته از key و value میتونم استفاده کنم و اون ها رو تغییر بدم اما نمیدونم چجوری فایل app.config رو با اونها کد کنم و در این روش بالا میدونم چجوری کد میشه اما نمیدونم چجوری باید connectionstring رو تغییر بدم
ممنون که راهنمایی میکنید

programer1389
یک شنبه 12 اردیبهشت 1389, 13:50 عصر
چی شد؟هنوز منتظرم

اَرژنگ
یک شنبه 12 اردیبهشت 1389, 15:09 عصر
چی شد؟هنوز منتظرم

این یک روش است (امتحان نکردم) ، و ممکنه مشکلاتی دیگر ببار بیارد:

http://www.codeproject.com/KB/cs/SystemConfiguration.aspx

این لینک نکاتی دیگر را به نظر میاره (که چرا ممکن است نوشتن به اپلیکیشن کانفیگ کار درستی نباشد):
http://bytes.com/topic/c-sharp/answers/237744-writing-app-config

پاورقی: استافده از trusted Connection برایه اتصال به داتابیس توصیه میشه، به این شکل تمام لگین و پسوردها به دست مدیر عامل و فقط از یکجا کنترل میشه.

programer1389
دوشنبه 13 اردیبهشت 1389, 07:33 صبح
سلام
با این مطالبی که لطف کردین گذاشتین قبلا اشنایی داشتم و میدونم که به علت مسائل امنیتی گذاشتین
پسورد سرور درون فایل app.config کار درستی نیست اما الان مجبورم این کار رو بکنم و این رو هم بگم کسانی که میخواهن از این کار استفاده کنن خودشون رمز ورود به سرور رو دارن

اَرژنگ
دوشنبه 13 اردیبهشت 1389, 07:53 صبح
سلام
با این مطالبی که لطف کردین گذاشتین قبلا اشنایی داشتم و میدونم که به علت مسائل امنیتی گذاشتین
پسورد سرور درون فایل app.config کار درستی نیست اما الان مجبورم این کار رو بکنم و این رو هم بگم کسانی که میخواهن از این کار استفاده کنن خودشون رمز ورود به سرور رو دارن
اگر دارند و میدونند ذخیره نکنید، باید تا جایی که ممکن است محدود باشد، به جایه اینکه ذخیره بشه میشه در زمان اجرا از کاربر پسورد را گرفت و برایه مدتی که برنامه اجرا میشه در حافظه نگهداشت.
اگر با تراستد کانکشن کار بشه احتیاجی به نگهداری پسورد نمیماند. همان کردنشیالهایه کاربری که لگین شده برایه اتصال به داتابیس استفاده میشه.

programer1389
دوشنبه 13 اردیبهشت 1389, 09:37 صبح
مشکل اینه که سرور مال یه شرکت دیگه هست که نمیشه روش سطح دسترسی ویندوز تعریف کرد و باید از همون یوزر و پسوردی که خودشون دادن استفاده بشه نمیتونم بگم پسورد رو خودتون وارد کنید چون خیلی زود تو شرکت پسورد پخش میشه و نمیخواهم این کار انجام بشه
نظرتون در مورد RSA چیه ؟میتونم با این روش اطلاعات رو کد کنم و امنیتش با توجه به اینکه با دو کلید کد میشن چقدره ؟البته اطلاعات من دراین مورد خیلی نیست

cardano7
دوشنبه 13 اردیبهشت 1389, 13:01 عصر
داداش واسه ما که همین یک خط کفاف داد:


Properties.Settings.Default.Save();

programer1389
دوشنبه 13 اردیبهشت 1389, 13:59 عصر
ببخشید اما منظورتون رو متوجه نشدم:متفکر:

اَرژنگ
دوشنبه 13 اردیبهشت 1389, 14:02 عصر
ببخشید اما منظورتون رو متوجه نشدم:متفکر:
http://msdn.microsoft.com/en-us/library/aa730869%28VS.80%29.aspx

programer1389
دوشنبه 13 اردیبهشت 1389, 14:07 عصر
مهدی جان سلام
ConfigurationSettings به گفته مایکروسافت دیگه منسوخ شده .به جای اون میتونی از ConfigurationManager استفاده کنی.
نحوه استفاده از اون هم تو msdn به طور کامل توضیح داده شده....

موفق باشی/
خوب این همونی نیست که تو این پست بالا در موردش گفته شده؟
اما این که تو msdn در موردش گفته شده که چجوری باید کانکشن رو درrun time تغییر داد من چیزی ندیدم

programer1389
سه شنبه 14 اردیبهشت 1389, 08:07 صبح
داداش واسه ما که همین یک خط کفاف داد:



Properties.Settings.Default.Save();

به نظر شما ایا تو این روش نیاز نیست کانکشن کد بشه اینجوری که خیلی راحت پسوردتون در اختیار بقیه قرار میگیره

اَرژنگ
سه شنبه 14 اردیبهشت 1389, 08:23 صبح
بیخیال اون کد.
سوال من این است که اگر پسورد و اسم کاربر را انکریپت شده در کانفیگ فایل نگهداری میکنید چرا احتیاج به ذخیره کردنش در زمان اجرا دارید؟
همینکه در زمان اینستال به شکل انکریپت شده به شکل دفالت استفاده بشه کافی نیست؟
یک سوال دیگر:
اینکه اسم و پسورد باید قبل از استفاده دکریپت بشند و به سرور فرستاده بشند مهم نیست؟ اگر در داخل یک سازمان قرار دارند ممکنه قابل قبول باشد ولی حتی میشه از یک روشی که اسم و پسورد را انکریپت کند و در طرف دیگر دیکریپت کنه استفاده کنید.
به احتمال زیاد Sql Server از یک چنین متدی پشتیبانی میکنه و اگر از خبره‌هاش در تالارش بپرسید جواب بهتر میگیرید.

programer1389
سه شنبه 14 اردیبهشت 1389, 12:55 عصر
سوال من این است که اگر پسورد و اسم کاربر را انکریپت شده در کانفیگ فایل نگهداری میکنید چرا احتیاج به ذخیره کردنش در زمان اجرا دارید؟
همینکه در زمان اینستال به شکل انکریپت شده به شکل دفالت استفاده بشه کافی نیست؟.
این بخاطر اینه که برنامه بتونه با چند تا سرور کار کنه یا اگه یکی از سرور عوض شد نخواهم
یک فایل app.config به همه کلاینتها بدم چیزی که شما میفرمایید زمانی مفید هست که لازم نباشه سرور تغییر کنه و کانکشن ثابت باشه


اینکه اسم و پسورد باید قبل از استفاده دکریپت بشند و به سرور فرستاده بشند مهم نیست؟ اگر در داخل یک سازمان قرار دارند ممکنه قابل قبول باشد ولی حتی میشه از یک روشی که اسم و پسورد را انکریپت کند و در طرف دیگر دیکریپت کنه استفاده کنید.
به احتمال زیاد Sql Server از یک چنین متدی پشتیبانی میکنه و اگر از خبره‌هاش در تالارش بپرسید جواب بهتر میگیرید.

خوب توی سرور دقیقا همین کار توسط لاگین ها که بصورت hash ذخیره میشن انجام میشه اونجا شما یک سری اطلاعات
که توسط کانکشن استرینگ به سرور میفرستی و سرور اونها رو هش کرده با اطلاعات موجود در سرور مقایسه میکنه انجام میشه و بعد اجازه دسترسی به اطلاعات رو توسط پرمیشن های موجود درsql server به شما میده اما اینکه چجوری این اطلاعات تو برنامه محرمانه بشن باید توسط .net انجام بشه
تو این مدت خیلی از سایتها رو گشتم فکر کنم باید برم سراغ همون RSA