none
Como obtener la ruta donde se encuentra la Foto de Perfil del Usuario en Windows [VB.NET] RRS feed

  • Pregunta

  • >Hello, World!_

    Tengo la Siguiente Pregunta:

    ¿Como puedo Obtener la ruta de la foto de Perfil del Usuario de Windows7 o Windows 10?

    Me Explico:

    Quiero que mi aplicacion Muestre en un PictureBox la Foto de Perfil del Usuario de Windows

    Por Foto de Perfil me refiero a la Imagen que sale en la parte Superior derecha en el Menu de Inicio de Windows 7 o Windows 10.

    Los Llamo a Ustedes, Dioses de la Programacion y el Codigo abierto

    Que el Compilador nos ampare!

    ¿Se puede?


    --- Cristopher Cáceres Developer | Worcome Studios

    sábado, 16 de diciembre de 2017 5:23

Respuestas

  • "ElCris009" preguntó:

    > ¿Como puedo Obtener la ruta de la foto de Perfil del Usuario de Windows7 o Windows 10?
    > Quiero que mi aplicacion Muestre en un PictureBox la Foto de Perfil del Usuario de Windows

    Hola:

    En mi Windows 10 la imagen de mi perfil de usuario se almacena en la siguiente ruta:

        C:\Users\CUENTA_USUARIO\AppData\Roaming\Microsoft\Windows\AccountPictures\

    En ella me aparecen dos archivos de imagen, donde el archivo correspondiente a la imagen actual tiene el nombre 46a8f58e8d5acc17, sin extensión alguna, aunque en realidad tiene la extensión .accountpicture-ms oculta, que es la extensión que tienen los archivos de imagen de cuenta en el sistema operativo Microsoft Windows.

    ¿Cómo puedes averiguar el nombre del archivo de imagen que actualmente está siendo utilizado por la cuenta del usuario? Consultando el valor SourceId existente en la siguiente clave del registro de Windows:

        HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AccountPicture

    ¡Bueno! Pues ya tienes la ruta y el nombre del archivo. Ahora, si eres capaz de abrir el archivo y mostrarlo en un control PictureBox, o abrirlo con cualquier editor de imágenes, te agradecería que me lo comentases, porque ya llevo un rato intentándolo y me he dado por vencido. :-(

    Aquí tienes una función que te devuelve la ruta completa correspondiente al archivo de imagen del usuario actual:

    Imports Microsoft.Win32
    
        ''' <summary>
        ''' Devuelve la ruta del archivo de imagen correspondiente
        ''' al perfil de la cuenta del usuario actual.
        ''' </summary>
        ''' <returns></returns>
        Public Shared Function GetImageCurrentUser() As String
    
            Dim fileName As String = String.Empty
    
            Dim subkey As String = "Software\Microsoft\Windows\CurrentVersion\AccountPicture"
    
            Using rk As RegistryKey = Registry.CurrentUser.OpenSubKey(subkey, False)
                fileName = rk.GetValue("SourceId", String.Empty).ToString()
            End Using
    
            If (fileName.Length > 0) Then
                Dim appData As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
                fileName = String.Format("{0}\Microsoft\Windows\AccountPictures\{1}.accountpicture-ms", appData, fileName)
                If (Not IO.File.Exists(fileName)) Then
    ' No existe el archivo. fileName = String.Empty End If End If Return fileName End Function

    Y para extraer los archivos gráficos existentes en el archivo de imagen de cuenta (*.accountpicture-ms), échale un vistazo al siguiente enlace, donde podrás descargar un programa para ser ejecutado desde el símbolo del sistema:

    How do I extract the image contained in a .accountpicture-ms file to a usable file format

    El código fuente escrito en C# lo podrás encontrar aquí:

    https://github.com/Efreeto/AccountPicConverter

    Que prácticamente es el mismo código que aparece en éste otro enlace, donde se explica un poco más detallado el formato de archivo de imagen de cuenta:

    Working with Windows 8 user pictures (.accountpicture-ms)

    Y si quieres traducir el código fuente a Visual Basic .NET, puedes hacer uso del siguiente conversor:

    Convert Code

    Para hacer una prueba, copia el archivo de imagen en la misma carpeta donde has guardado el archivo AccountPicConverter.exe. Abre una ventana del símbolo del sistema, te diriges a la carpeta en cuestión, y ejecuta lo siguiente:

        C:\Temporal>Accountpicconverter.exe "C:\Temporal\NombreArchivo.accountpicture-ms"

    Aunque el archivo tenga la extensión oculta, especifica la extensión .accountpicture-ms porque de lo contrario el programa generará una excepción.

    Si todo ha ido bien, en la carpeta figurarán en formato *.bmp dos archivos: NombreArchivo-96.bmp y NombreArchivo-448.bmp, que estos sí los podrás añadir a un control PictureBox, pero no el original, porque en realidad, parece ser que el archivo de imagen de cuenta es un contenedor de imágenes.

    Un saludo y ¡Feliz Navidad!


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    viernes, 22 de diciembre de 2017 10:36
    Moderador
  • "ElCris009" escribió:

    > Ahora vere si puedo obtener la Imagen xD
    >
    > si es asi te lo comento con codigo y todo

    ¡Bueno! Ya no me hace falta el código para extraer las imágenes existentes en el archivo de imágenes de la cuenta del usuario, porque el mismo aparece en los enlaces que indiqué en mi respuesta anterior. Tan solo tienes que traducirlo a Visual Basic .net, insertarlos en tu proyecto, y asunto resuelto. ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    sábado, 23 de diciembre de 2017 9:39
    Moderador

Todas las respuestas

  • Hola ElCris009

    De acuerdo a tu consulta, yo te recomiendo crear una base de datos en donde permita cargar imágenes y una vez creada la misma, hacer la conexión con tu form. El enlace que te voy a compartir es acerca de como cargar imágenes en SQL  un form. Dentro del mismo como ejemplo es un buscador de productos donde el usuario busca el producto y la base de datos misma, le arroja la imagen deseada.

    Nota: Esto puede darte una idea de como implementar un Form. Espero que te sea de mucha utilidad.

    https://msdn.microsoft.com/es-es/library/bb972266.aspx

    Quedamos al pendiente de cualquier actualización de tu parte.

    Saludos Cordiales.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.


    lunes, 18 de diciembre de 2017 19:46
  • no hablo de base de datos bro.

    quiero saber si puedo obtener la ruta donde se guarda la imagen del usuario de windows, no de una cuenta externa, nose, sacarla de Outlook o de algun directorio donde windows la guarda. eso no me sirve, pero lo tendre en cuenta para un proyecto que tenia.


    --- Cristopher Cáceres Developer | Worcome Studios

    viernes, 22 de diciembre de 2017 6:30
  • "ElCris009" preguntó:

    > ¿Como puedo Obtener la ruta de la foto de Perfil del Usuario de Windows7 o Windows 10?
    > Quiero que mi aplicacion Muestre en un PictureBox la Foto de Perfil del Usuario de Windows

    Hola:

    En mi Windows 10 la imagen de mi perfil de usuario se almacena en la siguiente ruta:

        C:\Users\CUENTA_USUARIO\AppData\Roaming\Microsoft\Windows\AccountPictures\

    En ella me aparecen dos archivos de imagen, donde el archivo correspondiente a la imagen actual tiene el nombre 46a8f58e8d5acc17, sin extensión alguna, aunque en realidad tiene la extensión .accountpicture-ms oculta, que es la extensión que tienen los archivos de imagen de cuenta en el sistema operativo Microsoft Windows.

    ¿Cómo puedes averiguar el nombre del archivo de imagen que actualmente está siendo utilizado por la cuenta del usuario? Consultando el valor SourceId existente en la siguiente clave del registro de Windows:

        HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AccountPicture

    ¡Bueno! Pues ya tienes la ruta y el nombre del archivo. Ahora, si eres capaz de abrir el archivo y mostrarlo en un control PictureBox, o abrirlo con cualquier editor de imágenes, te agradecería que me lo comentases, porque ya llevo un rato intentándolo y me he dado por vencido. :-(

    Aquí tienes una función que te devuelve la ruta completa correspondiente al archivo de imagen del usuario actual:

    Imports Microsoft.Win32
    
        ''' <summary>
        ''' Devuelve la ruta del archivo de imagen correspondiente
        ''' al perfil de la cuenta del usuario actual.
        ''' </summary>
        ''' <returns></returns>
        Public Shared Function GetImageCurrentUser() As String
    
            Dim fileName As String = String.Empty
    
            Dim subkey As String = "Software\Microsoft\Windows\CurrentVersion\AccountPicture"
    
            Using rk As RegistryKey = Registry.CurrentUser.OpenSubKey(subkey, False)
                fileName = rk.GetValue("SourceId", String.Empty).ToString()
            End Using
    
            If (fileName.Length > 0) Then
                Dim appData As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
                fileName = String.Format("{0}\Microsoft\Windows\AccountPictures\{1}.accountpicture-ms", appData, fileName)
                If (Not IO.File.Exists(fileName)) Then
    ' No existe el archivo. fileName = String.Empty End If End If Return fileName End Function

    Y para extraer los archivos gráficos existentes en el archivo de imagen de cuenta (*.accountpicture-ms), échale un vistazo al siguiente enlace, donde podrás descargar un programa para ser ejecutado desde el símbolo del sistema:

    How do I extract the image contained in a .accountpicture-ms file to a usable file format

    El código fuente escrito en C# lo podrás encontrar aquí:

    https://github.com/Efreeto/AccountPicConverter

    Que prácticamente es el mismo código que aparece en éste otro enlace, donde se explica un poco más detallado el formato de archivo de imagen de cuenta:

    Working with Windows 8 user pictures (.accountpicture-ms)

    Y si quieres traducir el código fuente a Visual Basic .NET, puedes hacer uso del siguiente conversor:

    Convert Code

    Para hacer una prueba, copia el archivo de imagen en la misma carpeta donde has guardado el archivo AccountPicConverter.exe. Abre una ventana del símbolo del sistema, te diriges a la carpeta en cuestión, y ejecuta lo siguiente:

        C:\Temporal>Accountpicconverter.exe "C:\Temporal\NombreArchivo.accountpicture-ms"

    Aunque el archivo tenga la extensión oculta, especifica la extensión .accountpicture-ms porque de lo contrario el programa generará una excepción.

    Si todo ha ido bien, en la carpeta figurarán en formato *.bmp dos archivos: NombreArchivo-96.bmp y NombreArchivo-448.bmp, que estos sí los podrás añadir a un control PictureBox, pero no el original, porque en realidad, parece ser que el archivo de imagen de cuenta es un contenedor de imágenes.

    Un saludo y ¡Feliz Navidad!


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    viernes, 22 de diciembre de 2017 10:36
    Moderador
  • muchas gracias, bro!

    Ahora vere si puedo obtener la Imagen xD

    si es asi te lo comento con codigo y todo

    Muchisimas gracias :D


    --- Cristopher Cáceres Developer | Worcome Studios

    sábado, 23 de diciembre de 2017 3:10
  • "ElCris009" escribió:

    > Ahora vere si puedo obtener la Imagen xD
    >
    > si es asi te lo comento con codigo y todo

    ¡Bueno! Ya no me hace falta el código para extraer las imágenes existentes en el archivo de imágenes de la cuenta del usuario, porque el mismo aparece en los enlaces que indiqué en mi respuesta anterior. Tan solo tienes que traducirlo a Visual Basic .net, insertarlos en tu proyecto, y asunto resuelto. ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    sábado, 23 de diciembre de 2017 9:39
    Moderador