Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Crear unidad virtual temporaria (https://www.clubdelphi.com/foros/showthread.php?t=33440)

ANG4L 06-07-2006 19:25:38

Crear unidad virtual temporaria
 
Buenas gente !!!!

Lo que me trae esta vez a crear un hilo, es la necesidad de crear una unidad virtual en win, mientras el programa se este ejecutando, para mantener alli, los archivos generados por el mismo a los que tienen acceso los usuarios....

Alguien tiene alguna idea por donde empezar? o algun tip?

Desde ya muchas gracias ! :D

marcoszorrilla 06-07-2006 19:47:59

Y no te sirve con crear una carpeta?

Un Saludo.

ANG4L 06-07-2006 22:55:45

Seria una solucion bastante simple, pero no, debe ser una unidad virtual :(

seoane 06-07-2006 23:12:20

Puedes crear unidades en memoria usando el Ramdisk de microsott, lo puedes bajar de su pagina web. Pero no podrias crearlar y elimnarla desde tu aplicacion, tendrias que hacer la instalacion como cualquier otro dispositivo.

Por otra parte, ¿por que tiene que ser una undidad virtual? . Si es para que sea facil de encontrar por los usuarios puedes usar el comando subst para mapear un directorio como si fuera una unidad nueva. Y si es para que no quede rastro de los archivos o por que no tienes permiso de escritura en el disco la mejor opcion es el Ramdisk pero recuerda que para instalarlo necesitaras ser administrador del equipo.

ANG4L 07-07-2006 14:48:25

Buenas, gracias por la respuesta !
Es un programita que va a correr en lans, y previendo la configuracion de seguridad de algunas, y tanto para correr en el server como en los clientes, queria generalizar haciendo esta unidad virtual para no tener problemas, pero podria ser usando subst, ahora.... como hago, si no tengo derecho de escritura, para cambiar los derechos (luego de pedir el ingreso del pass de administrador)?


Desde ya muchas graciaaaaaaaaaas !!!! :D

marcoszorrilla 07-07-2006 14:56:28

Estoy asombrado de que el Subst, siga existiendo aún.

Un Saludo.

seoane 07-07-2006 15:09:58

Por muy restringido que este el sistema, siempre tendrás acceso a un directorio temporal (corregirme si me equivoco). Solo tendrías que crear un directorio dentro del directorio temporal y usar "subst", o algún método similar, para convertirlo en una nueva unidad de disco.

marcoszorrilla 07-07-2006 15:34:43

Acabo de hacer una prueba con el que yo creía obsoleto comando interno del DOS y funciona:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
WinExec( 'Subst J: E:\marcosweb' ,SW_SHOWNORMAL);
end;
Un Saludo.

seoane 07-07-2006 15:52:16

Yo tambien hice algunas pruebas:

Código Delphi [-]
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
const
  Nombre = 'Temporal';
var
  Buffer: array[0..MAX_PATH] of Char;
  TempPath: string;
begin
  FillChar(Buffer,Sizeof(Buffer),0);
  if GetTempPath(Sizeof(Buffer) - 1, @Buffer) > 0 then
  begin
    TempPath:= string(PChar(@Buffer));
    if Copy(TempPath, Length(TempPath), 1) <> '\' then
      TempPath:= TempPath + '\';
    TempPath:= TempPath + Nombre;
    if not DirectoryExists(TempPath) then
      CreateDirectory(PChar(TempPath), nil);
    ShellExecute(Handle, nil, 'Subst', PChar('z: ' + TempPath), nil, SW_HIDE);
  end;
end;

ANG4L 07-07-2006 15:52:37

Marcos, eso es sobre NT o 9x?

ANG4L 07-07-2006 15:56:00

seoane, esa funciona de maravilla ! :D


ANG4L 07-07-2006 16:01:06

y para "desmontar" como serian los parametros ?

seoane 07-07-2006 16:11:18

Cita:

Empezado por ANG4L
y para "desmontar" como serian los parametros ?

Volveriamos a usar el comando Subst
Código Delphi [-]
  // Z es la letra de la unidad a desmontar
  ShellExecute(Handle, nil, 'Subst', PChar('/D z:'), nil, SW_HIDE);

ANG4L 07-07-2006 18:11:22

Se Agradeceeee !!!!
Pero me quede con la otra duda, como seria ? :confused:
No me va a dejar dormir, ajjajaj :p

Saludos, gente !

seoane 07-07-2006 18:28:41

Cita:

Empezado por ANG4L
Pero me quede con la otra duda, como seria ? :confused:
No me va a dejar dormir, ajjajaj :p

:confused: Me perdí. ¿Que otra duda?

ANG4L 07-07-2006 19:22:10

la que reemplazaria a lo que hace el Ramdisk :p

seoane 07-07-2006 20:15:29

Cita:

Empezado por ANG4L
la que reemplazaria a lo que hace el Ramdisk :p

Si lo que te interesa es crear una unidad virtual tu mismo por código, primero vete olvidando del delphi, pues estaríamos hablando de un "controlador de dispositivo" y el compilador de delphi no puede generar este tipo de ejecutable. Si te decides por ejemplo a hacerlo en C, vete preparándote para un arduo trabajo de MUCHAS lineas de código y nada fácil de depurar. Y aun así el resultado seria un controlador que tendrías que instalar en cada equipo, para lo que tendrías que tener derechos de administrador.

Si realmente necesitas un Ramdisk utiliza el Ramdisk de microsoft, que te puedes descargar gratis de su pagina web. O puedes buscar algún otro en google, yo he usado este http://www.acc.umu.se/~bosse/ que te permite crear un disco virtual a partir de un archivo.

Si lo anterior no era lo que preguntabas, por favor vuelve a preguntar


La franja horaria es GMT +2. Ahora son las 06:09:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi