私は実際に、どのコンピューターでもインストールされているさまざまなクラウド ストレージのリストを見つけることができる小さなアプリケーションを作成しています。C# で Skydrive フォルダーへのパスを取得する方法を考えています。
appdata/roaming フォルダーに保存されている情報を使用して、Dropbox と Google ドライブのパスを取得できましたが、Skydrive で同じことを行うことができませんでした。
ドロップボックスの場合:
string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string dbPath = System.IO.Path.Combine(appDataPath, "Dropbox\\host.db"); string[] lines = System.IO.File.ReadAllLines(dbPath);
byte[] dbBase64Text = Convert.FromBase64String(lines[1]);
string folderPath = System.Text.ASCIIEncoding.ASCII.GetString(dbBase64Text);
Google ドライブの場合:
String dbFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Google\\Drive\\sync_config.db");
File.Copy(dbFilePath, "temp.db", true);
String text = File.ReadAllText("temp.db", Encoding.ASCII);
// The "29" refers to the end position of the keyword plus a few extra chars
String trim = text.Substring(text.IndexOf("local_sync_root_pathvalue") + 29);
// The "30" is the ASCII code for the record separator
String drivePath = trim.Substring(0, trim.IndexOf(char.ConvertFromUtf32(30)));
skydrive フォルダーへのパスを取得する場合は、HKEY_CURRENT_USER\Software\Microsoft\SkyDrive の Registery 値を UserFolder という名前で使用する必要があります。コードは次のとおりです。
String SkyDriveFolder = Registry.GetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\SkyDrive", "UserFolder",null).ToString();