elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  C# - Obtener direcciones de carpetas.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: C# - Obtener direcciones de carpetas.  (Leído 1,741 veces)
NOIS

Desconectado Desconectado

Mensajes: 67


Ver Perfil
C# - Obtener direcciones de carpetas.
« en: 13 Abril 2016, 15:02 pm »

Hola,
Estoy haciendo un programa en el que necesito obtener la dirección de carpetas y archivos, como la dirección a la carpeta de un usuario.
El problema es que cuando estos archivos o carpetas tienen la letra 'ñ' en su nombre no recibe la dirección.

Código
  1. void CleanForAll(string AppData, string folder)
  2. {
  3.    foreach (string sid in keys)
  4.    {
  5.          string appDataPath = Registry.GetValue(UsersPath.Replace("<SID>", sid), AppData, null) as string;
  6.          if (appDataPath != null) Clean(Path.Combine(appDataPath, folder));
  7.    }
  8. }
  9.  

Ese es el código que uso para obtener las carpetas AppData de cada cuenta en el equipo, pero como digo, los nombres que contienen 'ñ' no los recoge.
¿Alguna idea?
Gracias.


« Última modificación: 14 Abril 2016, 02:44 am por NOIS » En línea

NOIS dev7
dainodaibouken

Desconectado Desconectado

Mensajes: 39



Ver Perfil
Re: C# - Obtener direcciones de carpetas.
« Respuesta #1 en: 13 Abril 2016, 18:14 pm »

Intenta esto, puedes reemplazar el character por su unicode.

void CleanForAll(string AppData, string folder)
{
    AppData = AppData.Replace("ñ","\u00f1");
    foreach (string sid in keys)
    {
          string appDataPath = Registry.GetValue(UsersPath.Replace("<SID>", sid), AppData, null) as string;
          if (appDataPath != null) Clean(Path.Combine(appDataPath, folder));
    }
}


En línea

NOIS

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: C# - Obtener direcciones de carpetas.
« Respuesta #2 en: 14 Abril 2016, 02:37 am »

Probé esa solución, pero no funcionó, por lo que hice otras pruebas y vi que el problema es que solo toma como válido el usuario desde el que se ejecuta el programa aunque 'keys' si registra todos los usuarios del sistema.

La aplicación la ejecuto siempre como administrador, por si alguien se pregunta eso.

¿Que otra forma podría utilizar para obtener la carpeta de todos los usuarios?
« Última modificación: 15 Abril 2016, 16:12 pm por NOIS » En línea

NOIS dev7
HCK.

Desconectado Desconectado

Mensajes: 181



Ver Perfil
Re:
« Respuesta #3 en: 8 Mayo 2016, 16:11 pm »

En teoria la "ñ" no deberia de usarse en archivos y carpetas, por el problema que tienes tú, al ser un caracter "especialito".

Si el usuario contiene " ñ" y quieres obtener el usuario para despues obtener sus directorios/archivos de AppData, puedes jugar con Environment, por ejemplo:

Environment.SystemDirectory.Substring(0, 2) + @"\" + Environment.Username + @"\" + "Appdata;

Con SystemDirectory pasandole un Substring obtienes la letra de unidad donde se encuentra el sistema. Lo demas ya sale solo.

En el caso de que quieras otra carpeta de usuario, una vez en "Users" puedes obtener los usuarios que quieras con Directory.GetDirectories(), pasandolo con un foreach.

Una vez alli puedes jugar con la clase " Directory", para obtener las carpetas y archivos, y con un metodo que se llame asi mismo puedes sacar todos los archivos y subdirectorios del directorio AppData.

Ahora ando desde el movil y no me extiendo mas por eso, pero si llego a casa y no llegas a la conclusión te hecho una mano :).

Sorry por no poner etiquetas para el pequeño code, aun estoy trasteando con Tapatalk.

Saludos.

Enviado desde mi C6603 mediante Tapatalk
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines