una startuppath ruta proyecto obtener nombre net mypath imagen directorio combine archivo application actual absoluta c# .net wpf path onedrive
El código fuente de la solución está aquí

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



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);