PDA

Ver la Versión Completa : Crear unidad virtual temporaria


ANG4L
06-07-2006, 19:25:38
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:
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:


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
y para "desmontar" como serian los parametros ?

Volveriamos a usar el comando Subst

// 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
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
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