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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  LongPaths y ShortPaths
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: LongPaths y ShortPaths  (Leído 1,578 veces)
el_c0c0


Desconectado Desconectado

Mensajes: 307


Ver Perfil
LongPaths y ShortPaths
« en: 3 Enero 2009, 01:40 am »

eh bueno, feliz año nuevo che.

el otro dia estaba desarrollando una nueva version de un cliente para cyber (algunos del foro de rvb se acuerdan de los screens que una vez subi).. en fin, esta version esta hecha bien, espero poder venderla =)..

Pero esto que tiene que ver?, bueno facil: hay que listar los exes en memoria y compararlos con una lista de aplicaciones que no se deben cerrar y algunas paths de los exes en memoria, como el caso del AVG, estan en short path.. si saben, hay un api para hacer un path short o long (es obvio, podria hacer los dos paths shorts, pero queria ver porque no funcionaba el api), pero el problema que si uno quiere el path long desde un path short, el api no devuelve lo que esperamos.

hasta el momento seguro que no entendieron ni medio.. vamos con ejemplos:

Short Path o formato 8.3:
C:\DOCUME~1\el_c0c0\ESCRIT~1\ESCRIT~1\WINDOW~1\WINDOW~1
Long Paht:
C:\Documents and Settings\el_c0c0\Escritorio\Escritorio\Windows_Vista_Wallpapers_HD_X\Windows_Vista_Wallpapers_HD_X

con el api GetShortPathName, obtenemos del long path, el short path..
pero con el api GetFullPathName, no obtenemos el long path a partir del short path..


eso nos da que pensar no?.

en fin, yo con mis ganas de hacer cagadas y funciones estupidas que no sirven de una *****, les dejo el source de esto que sirve para sacar del short path un long path... esta hecha asi nomas, por lo que se funciona con archivos.. pero esta ideada para carpetas. Ojo que si no existe va a flashear cualquier cosa, pero va a devolver false...

linken: http://santiagohssl.googlepages.com/testLongPath.rar

saludos y ya saben que este codigo no es muy bueno.. pero bueno es lo que hay..

saludos


En línea

'-     coco
"Te voy a romper el orto"- Las hemorroides
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: LongPaths y ShortPaths
« Respuesta #1 en: 3 Enero 2009, 02:20 am »

te entendi perfectamente..proba usar la api GetLongPathName,aca te paso un ejemplo facil:

Código
  1. Option Explicit
  2. Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
  3. Private Declare Function GetLongPathName Lib "kernel32.dll" Alias "GetLongPathNameA" (ByVal lpszShortPath As String, ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long
  4.  
  5. Private Function GetShortPath(strFileName As String) As String
  6.    Dim lngRes As Long, strPath As String
  7.    strPath = String$(165, 0)
  8.    lngRes = GetShortPathName(strFileName, strPath, 164)
  9.    GetShortPath = Left$(strPath, lngRes)
  10. End Function
  11.  
  12. Private Sub Form_Load()
  13.    Dim PathCorto As String, PathLargo As String
  14.    PathCorto = GetShortPath("C:\Archivos de Programa\Mozilla Firefox\firefox.exe")
  15.    'esto te devuelve C:\ARCHIV~1\MOZILL~1\firefox.exe
  16.    PathLargo = String(255, 0)
  17.    Call GetLongPathName(PathCorto, PathLargo, 255)
  18.    PathLargo = Replace(PathLargo, Chr(0), vbNullString)
  19.    MsgBox PathLargo, vbInformation
  20. End Sub

saludos.



En línea

el_c0c0


Desconectado Desconectado

Mensajes: 307


Ver Perfil
Re: LongPaths y ShortPaths
« Respuesta #2 en: 3 Enero 2009, 02:35 am »

te entendi perfectamente..proba usar la api GetLongPathName,aca te paso un ejemplo facil:

Código
  1. Option Explicit
  2. Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
  3. Private Declare Function GetLongPathName Lib "kernel32.dll" Alias "GetLongPathNameA" (ByVal lpszShortPath As String, ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long
  4.  
  5. Private Function GetShortPath(strFileName As String) As String
  6.    Dim lngRes As Long, strPath As String
  7.    strPath = String$(165, 0)
  8.    lngRes = GetShortPathName(strFileName, strPath, 164)
  9.    GetShortPath = Left$(strPath, lngRes)
  10. End Function
  11.  
  12. Private Sub Form_Load()
  13.    Dim PathCorto As String, PathLargo As String
  14.    PathCorto = GetShortPath("C:\Archivos de Programa\Mozilla Firefox\firefox.exe")
  15.    'esto te devuelve C:\ARCHIV~1\MOZILL~1\firefox.exe
  16.    PathLargo = String(255, 0)
  17.    Call GetLongPathName(PathCorto, PathLargo, 255)
  18.    PathLargo = Replace(PathLargo, Chr(0), vbNullString)
  19.    MsgBox PathLargo, vbInformation
  20. End Sub

saludos.



epetacular seba, sabes cual fue el problema? el api guide no la tiene a esa funcion (por lo menos el mio) :P...

saludos
En línea

'-     coco
"Te voy a romper el orto"- Las hemorroides
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: LongPaths y ShortPaths
« Respuesta #3 en: 3 Enero 2009, 12:45 pm »

No has de guiarte solo de las funciones que hay en el APIGuide, usa tambien la MSDN y el APIViewer ;D

Código:
http://msdn.microsoft.com/en-us/library/aa364980(VS.85).aspx

Saludos ;D
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