How do I programmatically locate my Google Drive folder using C#?

wollnyst picture wollnyst · Aug 29, 2012 · Viewed 7.1k times · Source

Similar question as here. Just for Google Drive instead of Dropbox:

How do I programmatically locate my Google Drive folder using C#?

  • Registry?
  • Environment Variable?
  • Etc...

Answer

Sarath Nair picture Sarath Nair · Nov 9, 2012

I personally think, the best way is to access the same file through SQLite3.

string dbFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Google\\Drive\\sync_config.db");
if (!File.Exists(dbFilePath))
    dbFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Google\\Drive\\user_default\\sync_config.db");

string csGdrive = @"Data Source="+ dbFilePath + ";Version=3;New=False;Compress=True;";                
SQLiteConnection con = new SQLiteConnection(csGdrive);
con.Open();
SQLiteCommand sqLitecmd = new SQLiteCommand(con);

//To retrieve the folder use the following command text
sqLitecmd.CommandText = "select * from data where entry_key='local_sync_root_path'";

SQLiteDataReader reader = sqLitecmd.ExecuteReader();
reader.Read();
//String retrieved is in the format "\\?\<path>" that's why I have used Substring function to extract the path alone.
Console.WriteLine("Google Drive Folder: " + reader["data_value"].ToString().Substring(4));
con.Dispose();

You can get the SQLite library for .Net from here. Also add reference to System.Data.SQLite and include it in your project to run the above code.

To retrieve the user, relpace entry_key='user_email' from the above code