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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Mirar la letra del disco duro
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Mirar la letra del disco duro  (Leído 5,772 veces)
askrator

Desconectado Desconectado

Mensajes: 71


Ver Perfil
Mirar la letra del disco duro
« en: 28 Julio 2007, 16:32 pm »

En un programa necesito saber la letra del disco local, no es para ningun troyano ni nada que se le parezca.

Un saludo.


En línea

ping -l 65510 127.0.0.1

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Mirar la letra del disco duro
« Respuesta #1 en: 28 Julio 2007, 16:46 pm »

Esta funcion devuelve un array de strings con la letra de las unidades e información sobre estas, espero que te sirva:

Código
  1. Function Drives() As String()
  2.    'Funcion que devuelve una matriz con las unidades e informacion sobre estas
  3. Dim obj As Object
  4. Dim drive As Object
  5. Dim i As Long
  6. On Error Resume Next
  7. Set obj = CreateObject("Scripting.FileSystemObject")
  8. ReDim resul(0 To ((obj.Drives.count * 6) - 1)) As String
  9. For Each drive In obj.Drives
  10.    resul(i) = drive.driveletter
  11.    If drive.DriveType = "Remote" Then
  12.        If drive.IsReady = True Then resul(i + 1) = drive.ShareName Else resul(1) = "Disco no preparado"
  13.    Else
  14.        If drive.IsReady = True Then resul(i + 1) = drive.VolumeName Else resul(1) = "Disco no preparado"
  15.    End If
  16.    resul(i + 2) = drive.DriveType
  17.    If drive.IsReady = True Then
  18.        resul(i + 5) = drive.FreeSpace
  19.        resul(i + 4) = drive.TotalSize
  20.        resul(i + 3) = drive.FileSystem
  21.    Else
  22.        resul(i + 5) = 0
  23.        resul(i + 4) = 0
  24.        resul(i + 3) = "Desconocido"
  25.    End If
  26.    If resul(i + 1) = "" Then resul(i + 1) = "Sin Nombre"
  27.    Select Case resul(i + 2)
  28.        Case 0: resul(i + 2) = "Desconocido"
  29.        Case 1
  30.            If resul(i + 4) = 0 Or (resul(i + 4) = 1457664 And resul(i + 3) = "FAT") Then
  31.                resul(i + 2) = "Disquete de 3½"
  32.            Else
  33.                resul(i + 2) = "Unidad removible"
  34.            End If
  35.        Case 2: resul(i + 2) = "Disco local"
  36.        Case 3: resul(i + 2) = "Unidad de red"
  37.        Case 4: resul(i + 2) = "CD-ROM"
  38.        Case 5: resul(i + 2) = "Disco RAM"
  39.        Case Else: resul(i + 2) = "Desconocido"
  40.    End Select
  41.    i = i + 6
  42. Next
  43. Drives = resul
  44. End Function


En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
askrator

Desconectado Desconectado

Mensajes: 71


Ver Perfil
Re: Mirar la letra del disco duro
« Respuesta #2 en: 28 Julio 2007, 17:11 pm »

No lo entiendo mucho pero lo voy a estudiar  :xD, en principio con la unidad me sobraba pero gracias por lo demas  ;D, ya te ire diciendo haber que no entiendo, que sera pronto por que madre que follon jeje.

Gracias y un saludo
En línea

ping -l 65510 127.0.0.1

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Mirar la letra del disco duro
« Respuesta #3 en: 28 Julio 2007, 17:30 pm »

Para lo que quieres tu serviría así:

Código
  1. Function Drives() As String()
  2.    'Funcion que devuelve una matriz con las letras de las unidades
  3. Dim obj As Object
  4. Dim drive As Object
  5. Dim i As Long
  6. On Error Resume Next
  7. Set obj = CreateObject("Scripting.FileSystemObject")
  8. ReDim resul(0 To (obj.Drives.count  - 1)) As String
  9. For Each drive In obj.Drives
  10.    resul(i) = drive.driveletter
  11.    i = i + 1
  12. Next
  13. Drives = resul
  14. End Function

Lo más esencial a entender de este código es la variable "obj", a la cual asigno un objeto de tipo "FileSystemObject" (FSO). Este objeto contiene información de cada una de las unidades y tambien de todos los archivos del sistema.

Con la instrucción "For each" lo que hago es asignar a la variable "drive" un contenedor de la propiedad "drive" del objeto "obj" (cada contenedor es una unidad). Despues uso la propiedad "driveletter" del objeto "drive" (k va cojiendo el valor de cada una de las unidades) para obtener la letra de la unidad.

Si aún no entiendes algo dímelo. Y si te interesa te puedo decir también como utilizar el "FileSystemObject" para obtener un listado de archivos y carpetas con sus atributos, tamaño, etc... de la ruta que quieras.

Saludos ;)
« Última modificación: 29 Julio 2007, 04:35 am por nhaalclkiemr » En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
askrator

Desconectado Desconectado

Mensajes: 71


Ver Perfil
Re: Mirar la letra del disco duro
« Respuesta #4 en: 28 Julio 2007, 22:08 pm »

Me da un error al escribir el codigo, me sale esta linea en rojo

ReDim resul(0 To (obj.Drives.count  - 1) As String

Si te digo la verdad... No se muy bien como se usan las Funciones, se que devuelven un valor pero he mirado por internet y sigo dudando  :-[ :-[ :-[ vamos que sigo dudando con el codigo.

Un saludo y muchas gracias  :)
En línea

ping -l 65510 127.0.0.1

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Mirar la letra del disco duro
« Respuesta #5 en: 29 Julio 2007, 04:48 am »

Ya he arreglado esa linea, es k al modificarla la puse mal... ahora ya la puse bien, te explico, las funciones son partes del código independientes a las que se les pueden pasar valores y pueden devolver un valor (o no)

un ejemplo muy simple, esta funcion que calcula el cuadrado de un numero:

Código
  1. Function Cuadrado (ByVal numero As Long) As Long
  2. Cuadrado = numero^2
  3. End Function

Para llamar a la funcion se puede llamar asi

Código
  1. resultado = Cuadrado(5)


El propio nombre de la funcion es una variable (Cuadrado), y es el valor que devolverá la funcion, es decir, "Cuadrado" va a ser la variable que al terminar la funcion se pasará a la variable "resultado", el numero 5 es el argumento, es decir, va a ser la variable numero en la "funcion"

En resumen, tu llamas a la funcion "Cuadrado" con el argumento "5", lo k hará la funcion es calcular el cuadrado del argumento (5) y guardarlo en la variable "Cuadrado", al terminar la funcion la variable "resultado" cojerá el valor del nombre de la funcion (Cuadrado)

La diferencia de esta funcion con la mía es que en la mía no paso ningun argumento (no hace falta) y que la funcion devuelve una matriz en vez de un número.

Si deseas llamar a una funcion que no devuelva ningun valor usa esto:

Código:
Call funcion(argumentos)

Donde "funcion" es el nombre de la funcion, asi llamarás a una funcion que no devolverá ningun valor.

Informate bien sobre funciones pork es esencial en vb conocer su uso, despues hay detalles como pasar valores "ByVal" (por valor) o "ByRef" (por referencia), pero para eso busca información que hay mucha.

Weno, espero haberte ayudado, busca informacion que hay mucha, y es facil usar funciones y son realmente utiles.

Saludos ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
askrator

Desconectado Desconectado

Mensajes: 71


Ver Perfil
Re: Mirar la letra del disco duro
« Respuesta #6 en: 29 Julio 2007, 11:19 am »

Bien ya entiendo las funciones y entiendo la tuya  :D :D muchas gracias nhaalclkiemr.

Solo dos dudas

Se crea el array resul con 5 entradas, como se donde esta instalado windows???

Como saco los valores del array fuera de la funcion??. Si pongo

MsgBox resul(5)

En la funcion y luego la llamo desde el programa salta la ventana con la letra, pero como saco los valores del array de la funcion y los pongo en variables o en otro array del programa para usarlas??? busco informacion y no me sale nada  :(

Lo unico que se me acaba de ocurrir es poner esto

Text1.Text = resul(5)

Dentro de la funcion, pero habra metodos más elegantes creo yo...

Solo una cosa mas, esta solo por curiosidad  :rolleyes: :rolleyes:

Como usas FileSystemObject para obtener un listado de archivos y carpetas con sus atributos, tamaño, etc...  :rolleyes: :rolleyes:

Un saludo y otra vez muchas gracias.
« Última modificación: 29 Julio 2007, 11:25 am por askrator » En línea

ping -l 65510 127.0.0.1

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Mirar la letra del disco duro
« Respuesta #7 en: 29 Julio 2007, 23:42 pm »

Para listar archivos esta funcion con argumento la ruta a listar:

Código
  1. Function FileList (ByVal directory As String) As String()
  2. Dim obj As Object
  3. Dim f As Object
  4. Dim fs As Object
  5. Dim i As Long
  6. Set obj = CreateObject("Scripting.FileSystemObject")
  7. Set f = obj.GetFolder(directory)
  8. Set fs = f.Files
  9. If fs.count = 0 Then Exit Function
  10. ReDim x(0 To (fs.count - 1)) As String
  11. For Each files In fs
  12. x(i) = files.Name
  13. Next
  14. FileList = x
  15. End Function

Para carpetas esta:

Código
  1. Function FolderList (ByVal directory As String) As String()
  2. Dim obj As Object
  3. Dim f As Object
  4. Dim sf As Object
  5. Dim i As Long
  6. Set obj = CreateObject("Scripting.FileSystemObject")
  7. Set f = obj.GetFolder(directory)
  8. Set sf = f.SubFolders
  9. If sf.count = 0 Then Exit Function
  10. ReDim x(0 To (sf.count - 1)) As String
  11. For Each folder In sf
  12. x(i) = folder.Name
  13. Next
  14. FolderList = x
  15. End Function

Si kieres saber mas sobre el "FileSystenObject" mira en la ayuda MSDN...yo lo aprendí todo aí...te aparecen sus propiedades, objetos, métodos, funciones, etc...

Saludos ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
askrator

Desconectado Desconectado

Mensajes: 71


Ver Perfil
Re: Mirar la letra del disco duro
« Respuesta #8 en: 30 Julio 2007, 14:35 pm »

 :xD :xD :xD :xD :xD :xD :xD :xD mirando mirando se me a ocurrido esto.

En un programa pones:
1- Drivelistbox -> visible = false

Ahora el codigo


Private Sub Form_Load()
Dim uni As String
uni = Drive1.Drive
MsgBox uni
End Sub

A mi me funciona igual jeje y mirando mirando creo que en menos lineas se puede hacer lo mismo que lo que me dices.

Un saludo
En línea

ping -l 65510 127.0.0.1

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Mirar la letra del disco duro
« Respuesta #9 en: 30 Julio 2007, 22:49 pm »

Ya pero necesitas un objeto drivelistbox...yo te puse akel pork lo tenia para mi troyano y lo necesitaba asi...y no keria añadir un drivelistbox...

SAludos ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Cambiar letra del Disco Duro
Windows
Hurubnar 4 7,574 Último mensaje 11 Enero 2011, 23:05 pm
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines