我实际上制作的应用程序可以在任何计算机上找到安装的不同云存储列表,我想知道如何在C#中获取Skydrive文件夹的路径。
我设法通过存储在appdata /漫游文件夹中的信息获取了dropbox和google驱动器的路径,但我无法使用Skydrive执行相同的操作。
对于dropbox:
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);
对于谷歌驱动器:
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();
答案 0 :(得分:3)
如果要获取skydrive文件夹的路径,则需要使用HKEY_CURRENT_USER \ Software \ Microsoft \ SkyDrive中的注册表值,名称为User Folder。这是代码:
String SkyDriveFolder = Registry.GetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\SkyDrive", "UserFolder",null).ToString();
答案 1 :(得分:1)
如果您查看:
C:\Users\{username}\AppData\Local\Microsoft\SkyDrive\settings
你会看到一个.ini文件,例如:
072d8533c42d12c1.ini
- 其中包含:
library = 1 4 072d8533c42d12c1!173 121684168 "SkyDrive" Me personal "{path to skydrive folder}"
我不确定这是否是一种找到文件夹的万无一失的方法,使用风险自负!
答案 2 :(得分:1)
在Windows 7中,当您安装SkyDrive程序时,可以在
中找到SkyDrive路径HKEY_CURRENT_USER\Software\Microsoft\SkyDrive
但是,在Windows 8中,SkyDrive是操作系统的一部分,因此路径存储在
中HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\SkyDrive
要更加跨平台兼容,只需检查两个注册表项。