私がやりたいのは、Preferences
GoogleChromeブラウザのファイルから2つの値を変更することです。私が今使っているコードは以下の通りです
[DataContract]
public class Mdata
{
[DataMember(Name = "homepage")]
public String homepage { get; private set; }
[DataMember(Name = "homepage_is_newtabpage")]
public Boolean isNewTab { get; private set; }
[DataMember(Name = "keep_everything_synced")]
public Boolean isSynced { get; private set; }
public Mdata() { }
public Mdata(String data)
{
homepage = data;
}
}
public static Mdata FindData(String json)
{
Mdata deserializedData = new Mdata();
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedData.GetType());
deserializedData = ser.ReadObject(ms) as Mdata;
ms.Close();
return deserializedData;
}
private void button1_Click(object sender, EventArgs e)
{
const int LikeWin7 = 6;
OperatingSystem osInfo = Environment.OSVersion;
DirectoryInfo strDirectory;
String path = null, file = null, data;
if (osInfo.Platform.Equals(System.PlatformID.Win32NT))
if (osInfo.Version.Major == LikeWin7)
path = Environment.GetEnvironmentVariable("LocalAppData") +
@"\Google\Chrome\User Data\Default";
if (path == null || path.Length == 0)
throw new ArgumentNullException("Fail. Bad OS.");
if (!(strDirectory = new DirectoryInfo(path)).Exists)
throw new DirectoryNotFoundException("Fail. The directory was not fund");
if (!new FileInfo(file = Directory.GetFiles(strDirectory.FullName, "Preferences*")[0]).Exists)
throw new FileNotFoundException("Fail. The file was not found.", file);
Mdata info = FindData(data = System.IO.File.ReadAllText(file));
Console.WriteLine(info.homepage); // show me http://www.google.com
Console.WriteLine(info.isNewTab); // prints false
MessageBox.Show(info.isSynced); // prints true
}
私が今やりたいのは、info.homepage、info.isNewTab、info.isSyncedの値を他の値に変更して(設定ファイル内で)次のようにすることです。
"homepage": "http://www.myWebsite.com/",
"homepage_is_newtabpage": true,
...
"keep_everything_synced": false,
私はこのような新しい値を直接設定しようとしました:
info.homepage = "www.mysite.com";
info.isNewTab = true;
info.isSynced = false;
しかし、チャンスはありません!
上記の3つのオブジェクトに新しい値を割り当てるにはどうすればよいですか?