Esta bastante bueno, considerando que batch no es un lenguaje de PROGRAMACION. Te felicito amigo.
bueno pues yo si lo considero asi.... se pueden hacer muchas cosas...
de paso dejo la nueva version que esta mejorada y con los errores arreglados..
Virtual Drive v 2 ReloadedAqui les traigo el nuevo codigo de esta gran utilidad que he codeado...
He arreglado los bugs de las anteriores versiones, con respecto a la gestion de las
unidades virtuales, y he agregado nuevas funciones, ademas de mayor seguridad para
los datos en las unidades...
Destro de las mejoras esta el uso de CACLS para cerrar los datos, y tambien la posibilidad
de personalizar la unidad virtual...xD xD
Una vista previa de la personalizacion... xD
El fondo aqui:
http://img221.imageshack.us/img221/5200/fondovd2bysmartnw3.jpgy Aqui el codigo del programa...
@echo off
mode con cols=68 lines=25
title Virtual Drive v 2 Reloaded - by :: SmartGenius ::
color 0a
REM Gestor de Unidad Virtual Protegida
REM Proteccion Mediante Credenciales, metodo by SmartGenius
REM Las Credenciales Permiten Crear una Unidad Virtual
REM independiente para cada Usuario de la PC.
:load
cls
call :credencial
if not exist "%systemdrive%\RECYCLER\%cred%\config.cfg" (goto first) else (goto menu)
exit
:menu
cls
echo.
echo Bienvenido %username%
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Gestor de Unidades Virtuales º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo Elija una Opcion:
echo.
echo ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³1³ ³ Abrir Unidad Virtual ³ ³2³ ³ Cerrar Unidad... ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³3³ ³ Crear Unidad Nueva... ³ ³4³ ³ Eliminar Unidad... ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³5³ ³ Proteger Unidad... ³ ³6³ ³ Extras ^& Ayuda ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
set /p pin=">> "
if %pin%==1 call :gestion open
if %pin%==2 call :gestion close
if %pin%==3 call :create
if %pin%==4 call :gestion delete
if %pin%==5 call :gestion lock
if %pin%==6 (goto other) else (goto menu)
exit
:gestion
cls
set funcion=%1
set lin11= &set lin12= &set lin13=
set lin21= &set lin22= &set lin23=
set uni1= &set uni2= &set uni3= &set drive=
for /F "tokens=*" %%n in (%systemdrive%\RECYCLER\%cred%\config.cfg) do (set num=%%n)
call :unis %num%
echo.
echo.
echo Unidades Virtuales: %num%
echo.
echo Escoja una Unidad Virtual:
echo.
echo %lin11% %lin12% %lin13%
echo %uni1% %uni2% %uni3%
echo %lin21% %lin22% %lin23%
echo.
set /p unidad=">> "
call :%funcion% %unidad%
goto :eof
:unis
set val=%1
for /l %%k in (0,1,3) do (
if exist "%systemdrive%\RECYCLER\%cred%\vd00%%k.tmf" (
for /F "tokens=1" %%l in (%systemdrive%\RECYCLER\%cred%\vd00%%k.tmf) do (
set uni%%k=³%%k³ ³ Unidad %%l ³
set lin1%%k=ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄ¿
set lin2%%k=ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÙ
)
)
)
goto :eof
:credencial
for /R "%appdata%\Microsoft\Credentials" %%a in (.) do (echo %%a>%temp%\cred.tmf)
for /F "tokens=7 delims=\" %%b in (%temp%\cred.tmf) do (set cred=%%b)
goto :eof
:first
call :credencial
cls
echo.
echo TOKEN: %cred%
echo.
echo Bienvenido %username%
echo.
echo Aun no ha creado Ninguna Unidad Virtual
echo.
echo Debe escoger la opcion de Crear Unidad
echo Virtual en el Menu Principal...
echo.
ping -n 4 0.0.0.0 >nul
echo 0 >%systemdrive%\RECYCLER\%cred%\config.cfg
goto menu
:open
set var=%1
if not exist "%systemdrive%\RECYCLER\%cred%\vd00%var%.tmf" (echo.&echo La Unidad Escogida no Existe&echo.&pause&goto menu)
for /F "tokens=*" %%m in (%systemdrive%\RECYCLER\%cred%\vd00%var%.tmf) do (set drive=%%m)
set unidad=%drive:~0,1%:
if exist "%unidad%" (echo.&echo La Unidad se encuentra Activa&echo.&pause&start %unidad%&goto menu)
if exist "%systemdrive%\RECYCLER\%cred%\vd00%var%.cfg" (call :unlock %var%)
set ruta=%systemdrive%\RECYCLER\%cred%\vd00%var%
cacls "%ruta%" /e /p Todos:f>nul
subst "%unidad%" "%ruta%"
echo Por Favor espere...
ping -n 5 0.0.0.0>nul
start %unidad%
goto :eof
:close
set letra=%1
for /F "tokens=*" %%m in (%systemdrive%\RECYCLER\%cred%\vd00%letra%.tmf) do (set drive=%%m)
set unidad=%drive:~0,1%:
set ruta=%systemdrive%\RECYCLER\%cred%\vd00%letra%
subst "%unidad%" /D
cacls "%ruta%" /e /d Todos>nul
echo.
echo Unidad Bloqueada
echo.
pause
goto :eof
:lock
set virt=%1
if exist "%systemdrive%\RECYCLER\%cred%\vd00%virt%\password.cfg" (call :unlock %virt%)
echo.
echo Introduzca un Clave para Proteger la Unidad
echo.
set /p clave=">> "
echo %clave%>"%systemdrive%\RECYCLER\%cred%\vd00%virt%\password.cfg"
echo Protected>"%systemdrive%\RECYCLER\%cred%\vd00%virt%.cfg"
attrib +h "%systemdrive%\RECYCLER\%cred%\vd00%virt%\password.cfg"
echo La Clave "%clave%" ha sido establecida Exitosamente.
echo.
pause
goto :eof
:unlock
set tip=%1
for /F "tokens=*" %%c in (%systemdrive%\RECYCLER\%cred%\vd00%tip%\password.cfg) do (set word=%%c)
echo.
echo La Unidad Virtual se Encuentra Protegida.
echo.
echo Introduzca el Password:
echo.
set /p pass=">> "
if %pass%==%word% (goto :eof) else (echo.&echo Clave Incorrecta&pause&goto menu)
goto :eof
:help
cls
echo.
echo Bienvenido a la Ayuda del Programa
echo.
echo El TOKEN es el Identificador de Seguridad del Usuario,
echo y es diferente en cada Instalacion de Windows.
echo.
echo Use la Unidad Virtual para guardar archivos y luego
echo bloquee el acceso mediante la aplicacion.
echo.
echo Puede crear un Maximo de 3 Unidades Virtuales por
echo usuario.
echo.
echo Si lo desea, puede establecer una contraseña para cada
echo na de las Unidades Virtuales.
echo.
echo De igual manera cuenta con varias opciones para que
echo personalice la Unidad Virtual.
echo.
echo Para dudas, comentarios y sugerencias favor contactar
echo con el autor del Programa.
echo.
echo :: SmartGenius, Corp. 2008 ::
echo.
pause
goto menu
:create
cls
echo.
echo Token: %cred%
echo.
echo Desea Crear Una Nueva Unidad Virtual?? Si [S] No [N]
echo.
set /p opc=">> "
if %opc%==n (goto menu)
if %opc%==N (goto menu)
for /F "tokens=*" %%d in (%systemdrive%\RECYCLER\%cred%\config.cfg) do (set num=%%d)
if %num%==3 (echo.&echo No se permiten mas de 3 Unidades Virtuales&echo.&pause&goto menu)
set /a num=%num%+1
md "%systemdrive%\RECYCLER\%cred%\vd00%num%"
echo %num% >%systemdrive%\RECYCLER\%cred%\config.cfg
echo.
echo Introduzca una Letra para Asignar a la Nueva Unidad:
echo.
set /p new=">> "
echo %new% >%systemdrive%\RECYCLER\%cred%\vd00%num%.tmf
echo.
echo Unidad Virtual %new% creada.
echo.
pause
goto menu
:delete
cls
set num=%1
echo.
echo Token: %cred%
echo.
echo Esta Seguro de quitar la Unidad Virtual?? Si [S] No [N]
echo.
set /p opc=">> "
if %opc%==n (goto menu)
if %opc%==N (goto menu)
cacls "%systemdrive%\RECYCLER\%cred%\vd00%num%.tmf" /e /p Todos:f>nul
del /f "%systemdrive%\RECYCLER\%cred%\vd00%num%.tmf"
rd /s /q "%systemdrive%\RECYCLER\%cred%\vd00%num%"
for /F "tokens=*" %%h in (%systemdrive%\RECYCLER\%cred%\config.cfg) do (set tot=%%h)
set /a abc=%tot%-1
echo %abc% >%systemdrive%\RECYCLER\%cred%\config.cfg
echo.
echo Unidad Virtual Eliminada.
echo.
pause
goto menu
:other
cls
echo.
echo.
echo Que desea hacer ??
echo.
echo ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³1³ ³ Personalizar la Unidad Virtual ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³2³ ³ Ver la Ayuda del Programa ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³3³ ³ Volver al Menu Principal... ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
set /p nvc=">> "
if %nvc%==1 goto personalize
if %nvc%==2 goto help
if %nvc%==3 (goto menu) else (goto other)
:personalize
cls
echo.
echo Los cambios deben realizarse con la unidad abierta
echo y se haran efectivos la proxima vez que abra la
echo Unidad Virtual.
echo.
echo Escoja una Opcion:
echo.
echo ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³1³ ³ Definir Fondo ³ ³2³ ³ Color de Letra ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³3³ ³ Quitar Fondo.. ³ ³4³ ³ Volver al menu ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
set /p opc=">> "
if %opc%==1 call :gestion wall
if %opc%==2 call :gestion color
if %opc%==3 call :gestion delwall
if %opc%==4 (goto menu) else (goto personalize)
:wall
set letra=%1
for /F "tokens=*" %%m in (%systemdrive%\RECYCLER\%cred%\vd00%letra%.tmf) do (set drive=%%m)
set unidad=%drive:~0,1%:
attrib -h -a "%unidad%\desktop.ini"
attrib -h -a "%unidad%\fondo.cfg"
del /f "%unidad%\desktop.ini">nul
del /f "%unidad%\fondo.cfg">nul
cls
echo.
echo Seleccione o arrastre aqui una Imagen
echo para configurarla como fondo
echo.
set /p img=">> "
copy /y %img% "%unidad%\fondo.cfg">nul
echo [{BE098140-A513-11D0-A3A4-00C04FD706EC}]>>"%unidad%\desktop.ini"
echo IconArea_Image=fondo.cfg >>"%unidad%\desktop.ini"
echo IconArea_Text=0x000000>>"%unidad%\desktop.ini"
attrib +h "%unidad%\desktop.ini">nul
attrib +h "%unidad%\fondo.cfg">nul
echo.
echo Imagen establecida con Exito.
echo.
pause
goto personalize
:color
set letra=%1
for /F "tokens=*" %%m in (%systemdrive%\RECYCLER\%cred%\vd00%letra%.tmf) do (set drive=%%m)
set unidad=%drive:~0,1%:
attrib -h -a "%unidad%\desktop.ini"
del /f "%unidad%\desktop.ini">nul
cls
echo.
echo.
echo Aqui se definen los colores para
echo la letra o fuente de los nombres
echo de archivo y carpetas...
echo.
echo ÚÄ¿ ÚÄÄÄÄÄÄÄ¿ ÚÄ¿ ÚÄÄÄÄÄÄÄ¿ ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³1³ ³ Azul ³ ³2³ ³ Rojo ³ ³3³ ³ Amarillo.. ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÙ ÀÄÙ ÀÄÄÄÄÄÄÄÙ ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄ¿ ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄ¿
echo ³4³ ³ Fucsia.. ³ ³5³ ³ Negro ³
echo ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÙ ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÙ
echo.
set /p vc=">> "
if %vc%==1 set color=ff0000
if %vc%==2 set color=0000ff
if %vc%==3 set color=00ffff
if %vc%==4 set color=ff00ff
if %vc%==5 set color=000000
echo [{BE098140-A513-11D0-A3A4-00C04FD706EC}]>>"%unidad%\desktop.ini"
echo IconArea_Image=fondo.cfg >>"%unidad%\desktop.ini"
echo IconArea_Text=0x%color% >>"%unidad%\desktop.ini"
attrib +h "%unidad%\desktop.ini"
echo.
echo Color de Fuente. OK
echo.
pause
goto personalize
:delwall
set letra=%1
for /F "tokens=*" %%m in (%systemdrive%\RECYCLER\%cred%\vd00%letra%.tmf) do (set drive=%%m)
set unidad=%drive:~0,1%:
cls
echo.
echo.
echo Esta seguro que desea Eliminar el Fondo...
echo.
echo Si [S] No [N]
echo.
set /p var=">> "
if %var%==s (attrib -h -a "%unidad%\desktop.ini" & del /f "%unidad%\desktop.ini" & echo.&echo Se elimino el fondo con Exito&echo.&pause&goto personalize)
if %var%==S (attrib -h -a "%unidad%\desktop.ini" & del /f "%unidad%\desktop.ini" & echo.&echo Se elimino el fondo con Exito&echo.&pause&goto personalize)
if %var%==n (echo.&echo No se elimino...&echo.&pause&goto personalize)
if %var%==N (echo.&echo No se elimino...&echo.&pause&goto personalize) else (goto main)
Comparenlo con la version anterior y notaran la mejoras...
Lo unico que haria falta es mejorar la ayuda
, es que soy malo para eso,
y tambien que la contraseña sea cifrada, de resto el programa trabaja perfectamente..
Si tienen alguna sugerencia para hacer, o un comentario pues bienvenidos sean...
Saludos.