Potrebno mi je nekako da pamtim odredjena podesavanja (stringovi iz texboxova medju kojima je i sifra) da ih ne bih unosio uvijek prilikom startovanja programa. Zanima me da li je ta podesavanja moguce nekako unijeti u app.config i kako raditi update tih podesavanja. Ako nije moguce, trebala bi mi pomoc oko kreiranja novog xml fajla (gledao sam neke tutoriale ali su slozeni sadrze liste sekcije itd. a meni treba jednostavno upis/citanje u/iz textbox/a) i nacin da enkriptujem sifru i ucinim je necitljivom spolja. Pocetnik sam i svaka pomoc mi je dobrodosla.
C#: app.config unos/citanje
Zaključano
Zakačeno
Ako ti je problem koristenje XML-a za cuvanje config vrijednosti, onda barem za pocetak koristi obicne txt fajlove. Mozes npr. da koristis delimiter u samom fajlu:
com5;
john;
********;
bleh;
A enkripciju mozes sam jednostavno da uradis. Imas mnogo nacina za to. Jednostaviji je da, konvertujes string u char, onda char u int, pa mozda da obavis neku operaiciju nad dobijenim intom (mozda da ga saberes sa 5). Kad si vrijednost enkriptovo, onda samo revers postupak i dekriptujes.
Manjak je da su ti sifre slabo zasticene (opet zavisi koju si mat. operaciju uraido na intom)
Prednost je da si ti to sam odradio :)
Na kraju krajeva, mozes iskoristiti i enkripciju koja se vec nalazi u *.NET.
[IMG]http://img233.imageshack.us/img233/5078/thumbnailte1.th.jpg[/IMG]
They say I look like daddy :D
com5;
john;
********;
bleh;
A enkripciju mozes sam jednostavno da uradis. Imas mnogo nacina za to. Jednostaviji je da, konvertujes string u char, onda char u int, pa mozda da obavis neku operaiciju nad dobijenim intom (mozda da ga saberes sa 5). Kad si vrijednost enkriptovo, onda samo revers postupak i dekriptujes.
Manjak je da su ti sifre slabo zasticene (opet zavisi koju si mat. operaciju uraido na intom)
Prednost je da si ti to sam odradio :)
Na kraju krajeva, mozes iskoristiti i enkripciju koja se vec nalazi u *.NET.
Potpis
[IMG]http://img233.imageshack.us/img233/5078/thumbnailte1.th.jpg[/IMG]
They say I look like daddy :D
Možeš da napraviš klasu koja predstavlja stanje tvoje aplikacije, npr:
Zatim na neki događaj (izlazak iz aplikacije ili neki button click) napuniš tu klasu sa nekim vrednostima i serijalizuješ je kao binarni fajl.
Kod učitavanja aplikacije samo deserijalizuješ taj objekat.
Na netu ima dosta primera za binarnu serilizaciju:
http://www.switchonthecode.com...al-serialize-objects-to-a-file
Na ovaj način osetljivi podaci nisu vidljivi i ne mogu da se promene izvan aplikacije.
(Zapravo mogu, ali prosečan korisnik sigurno neće znati kako ;) )
Code:
[Serializable]
public class ApplicationState
{
public string Foo { get; set; }
public string Boo { get; set; }
}
[Serializable]
public class ApplicationState
{
public string Foo { get; set; }
public string Boo { get; set; }
}
Zatim na neki događaj (izlazak iz aplikacije ili neki button click) napuniš tu klasu sa nekim vrednostima i serijalizuješ je kao binarni fajl.
Kod učitavanja aplikacije samo deserijalizuješ taj objekat.
Na netu ima dosta primera za binarnu serilizaciju:
http://www.switchonthecode.com...al-serialize-objects-to-a-file
Na ovaj način osetljivi podaci nisu vidljivi i ne mogu da se promene izvan aplikacije.
(Zapravo mogu, ali prosečan korisnik sigurno neće znati kako ;) )
hvala na odgovorima.
sredio sam jednostavno koristeci .txt (u resource-u) i .net enkripciju
sredio sam jednostavno koristeci .txt (u resource-u) i .net enkripciju
Upisivanje/menjanje app settings-a treba podeliti na one sa User i Application scope-om, ja sam koristio sledece metode, mozda nekom budu od pomoci:
za User scope:
za Connection string, Application scope:
za User scope:
Code:
private static void SaveUserSettingDefault(string groupname,string clientSectionName, string settingName, object settingValue)
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// find section group
ConfigurationSectionGroup group = config.SectionGroups[@groupname];
if (group == null) return;
// find client section
ClientSettingsSection clientSection = group.Sections[clientSectionName] as ClientSettingsSection;
if (clientSection == null) return;
// find setting element
SettingElement settingElement = null;
foreach (SettingElement s in clientSection.Settings)
{
if (s.Name == settingName)
{
settingElement = s;
break;
}
}
if (settingElement == null) return;
// remove the current value
clientSection.Settings.Remove(settingElement);
// change the value
settingElement.Value.ValueXml.InnerText = settingValue.ToString();
// add the setting
clientSection.Settings.Add(settingElement);
// save changes
config.Save(ConfigurationSaveMode.Full);
}
private static void SaveUserSettingDefault(string groupname,string clientSectionName, string settingName, object settingValue)
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// find section group
ConfigurationSectionGroup group = config.SectionGroups[@groupname];
if (group == null) return;
// find client section
ClientSettingsSection clientSection = group.Sections[clientSectionName] as ClientSettingsSection;
if (clientSection == null) return;
// find setting element
SettingElement settingElement = null;
foreach (SettingElement s in clientSection.Settings)
{
if (s.Name == settingName)
{
settingElement = s;
break;
}
}
if (settingElement == null) return;
// remove the current value
clientSection.Settings.Remove(settingElement);
// change the value
settingElement.Value.ValueXml.InnerText = settingValue.ToString();
// add the setting
clientSection.Settings.Add(settingElement);
// save changes
config.Save(ConfigurationSaveMode.Full);
}
za Connection string, Application scope:
Code:
private static void SaveConnectionString(string connstringname,string conectionstring)
{
// Get the application configuration file.
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
// Create a connection string element and
// save it to the configuration file.
// Create a connection string element.
ConnectionStringSettings csSettings =
new ConnectionStringSettings(connstringname, @conectionstring);
// Get the connection strings section.
ConnectionStringsSection csSection =
config.ConnectionStrings;
// Remove element.
csSection.ConnectionStrings.Remove(csSettings);
// Add the new element.
csSection.ConnectionStrings.Add(csSettings);
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified);
}
private static void SaveConnectionString(string connstringname,string conectionstring)
{
// Get the application configuration file.
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
// Create a connection string element and
// save it to the configuration file.
// Create a connection string element.
ConnectionStringSettings csSettings =
new ConnectionStringSettings(connstringname, @conectionstring);
// Get the connection strings section.
ConnectionStringsSection csSection =
config.ConnectionStrings;
// Remove element.
csSection.ConnectionStrings.Remove(csSettings);
// Add the new element.
csSection.ConnectionStrings.Add(csSettings);
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified);
}