以编程方式访问Google Chrome主页或"开始"页面

Ram*_*ous 20 c# google-chrome

Chrome在哪里保存主页或开始页面网址?我想使用C#以编程方式访问它.

Mar*_*gus 31

默认位置是:

Windows XP

谷歌浏览器: C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default
铬: C:\Documents and Settings\<username>\Local Settings\Application Data\Chromium\User Data\Default

Vista/7

谷歌浏览器: C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
铬: C:\Users\<username>\AppData\Local\Chromium\User Data\Default

Mac OS X.

谷歌浏览器: ~/Library/Application Support/Google/Chrome/Default
铬: ~/Library/Application Support/Chromium/Default

Linux的

谷歌浏览器: ~/.config/google-chrome/Default
铬: ~/.config/chromium/Default

来源:Google Chromium用户数据目录的默认位置.(链接)

在我写这篇文章的时间上,这是我能想到的最短且最健壮的例子(我完全忽略了这个事实,即用户可以使用不同的位置然后默认).必须说,它有点棘手,然后我想.

在此示例中,我尝试使用默认位置目录,并查找存储"Home"的首选项文件.它以JSon格式存储,因此我反编译我感兴趣的数据并将其打印出来.

赢7例:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的示例输出:

chrome://newtab
True
Run Code Online (Sandbox Code Playgroud)

希望我得到至少1票:P


Kev*_*Kev 5

在Windows 7(我猜Vista)上使用默认安装它存储在文件中:

%USERPROFILE%\AppData\Local\Google\User Data\Default\Preferences

在Windows 2003(和XP)上:

%USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data\Default\Preferences

要查找的属性名称是:homepage.