Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically access the Google Chrome Home or Start page

Tags:

Where does Chrome save the Home or Start page URL? I want to access it programmatically using C#.

like image 260
Ramy Mahrous Avatar asked Oct 24 '10 12:10

Ramy Mahrous


People also ask

What is the address for Google Chrome homepage?

Click the General tab. Under "Home page," enter: www.google.com .


1 Answers

Default locations are:

Windows XP

Google Chrome: C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default
Chromium: C:\Documents and Settings\<username>\Local Settings\Application Data\Chromium\User Data\Default

Vista / 7

Google Chrome: C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
Chromium: C:\Users\<username>\AppData\Local\Chromium\User Data\Default

Mac OS X

Google Chrome: ~/Library/Application Support/Google/Chrome/Default
Chromium: ~/Library/Application Support/Chromium/Default

Linux

Google Chrome: ~/.config/google-chrome/Default
Chromium: ~/.config/chromium/Default

Source: Google Chromium user data directory default locations. ( link )

In amount of time I spent on writing this, this was the shortest and most robust example I could think of (I completely ignored the fact, that user could use different location then default). Must say, it was bit trickier, then I thought.

In this example, I try using the default location directory, and finding the preference file where the "Home" is stored. It is stored in JSon format, so I deserialize the data that I am interested, and print it out.

Win 7 Example:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; //References -> Add Reference -> "System.Runtime.Serialization" Add using System.Runtime.Serialization; using System.Runtime.Serialization.Json;  namespace test {     class Program {         [DataContract]         public class Mdata {             [DataMember(Name = "homepage")]              public String homepage { get; private set; }             [DataMember(Name = "homepage_is_newtabpage")]             public Boolean isNewTab { 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;         }          static void Main(string[] args) {             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);             Console.WriteLine(info.isNewTab);         }     } } 

Example output for Me:

chrome://newtab True 

Hope I get at least 1 up vote :P

like image 132
Margus Avatar answered Oct 24 '22 17:10

Margus