c# - startuppath - Obtener la ruta OneDrive en Windows
ruta absoluta c# (6)
Tengo una aplicación C # WPF y estoy tratando de encontrar la manera de obtener la ruta al directorio raíz de OneDrive en Windows. ¿Cómo puedo hacer esto programáticamente? He buscado en línea, pero no pude encontrar nada. Desearía poder proporcionar algún código, pero no tengo ni idea; Quiero decir, he comprobado las variables del entorno del sistema y no pude encontrar nada en mi máquina, pensando que podría ser una solución válida, pero no apareció nada.
Estaba pensando en el registro como Smashing1978 mencionado, pero no tengo una clave UserFolder en HKEY_CURRENT_USER / Software / Microsoft / Windows / CurrentVersion / SkyDrive.
¿Podría usar la ruta% UserProfile% / SkyDrive?
En mi computadora con Windows 8.1, la clave de registro que contiene esta información es: HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/SkyDrive/UserFolder
Intentaría usar el método Registry.GetValue()
:
const string userRoot = "HKEY_CURRENT_USER";
const string subkey = @"Software/Microsoft/Windows/CurrentVersion/SkyDrive";
const string keyName = userRoot + "//" + subkey;
string oneDrivePath = (string)Registry.GetValue(keyName,
"UserFolder",
"Return this default if NoSuchName does not exist.");
Console.WriteLine("/r/n OneDrivePath : {0}", oneDrivePath);
También encontré el camino en:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/SyncRootManager/SkyDrive/UserSyncRoots/S-1-5-21-2696997101-1021499815-432504798-1004
HKEY_USERS/S-1-5-21-2696997101-1021499815-432504798-1004/Software/Microsoft/Windows/CurrentVersion/SkyDrive/UserFolder
Debe encontrar la ruta bajo registro ... Primero ejecute regedit desde el cuadro de búsqueda, luego en Software - Microsoft - encuentre la descripción de la imagen de OneDrive aquí
Luego usa esa ruta para tu cadena de subclaves
const string subkey = @ "Software / Microsoft / OneDrive";
private void button1_Click(object sender, EventArgs e)
{
try
{
const string userRoot = "HKEY_CURRENT_USER";
const string subkey = @"Software/Microsoft/OneDrive";
const string keyName = userRoot + "//" + subkey;
string oneDrivePath = (string)Microsoft.Win32.Registry.GetValue(keyName,
"UserFolder",
"Return this default if NoSuchName does not exist.");
Console.WriteLine("/r/n OneDrivePath : {0}", oneDrivePath);
string Onedrivepath= string.Format(oneDrivePath);
label1 .Text = string.Format(Onedrivepath);
}
catch (Exception)
{
/// throw;
}
}
Con la última actualización de Windows 10, Microsoft introdujo la nueva variable de entorno% OneDrive%, la revisé en la actualización de abril de 2017 (actualización de creadores) y está allí.
Obtengo la ubicación de mi carpeta OneDrive utilizando la constante FOLDERID_SkyDrive ( https://msdn.microsoft.com/library/dd378457.aspx ) y el método "GetKnownFolderPath" de la respuesta en // Detecta la ubicación de AppData / LocalLow .
Aunque la variable de entorno "PERFIL DE USUARIO" combinada con "/ OneDrive" algunas veces funcionará, si el usuario ha movido su carpeta OneDrive, la variable de entorno será realmente un punto de reanálisis y no la ubicación real.
Probado en Windows 10
Guid FOLDERID_SkyDrive = new Guid("A52BBA46-E9E1-435f-B3D9-28DAA648C0F6");
location = GetKnownFolderPath(FOLDERID_SkyDrive);