BIENVENIDA RAZA INFORMATICA

QUE TAL GENTE INFORMÁTICA Y DEMÁS ASOCIADOS,



MI INTENCIÓN NO ES SER EL MAS CARAJO



SI NO AYUDAR A LA GENTE COMÚN Y CORRIENTE COMO YO, DE ALGUNOS PROBLEMAS COTIDIANOS QUE NOS ENCONTRAMOS EN EL MUNDO DE LA INFORMÁTICA

jueves, 15 de julio de 2010

El Experto y El Decepcionado - Usuarios de Ubuntu

Rodolfos y Nancys

Rodolfo, llamémoslo así, es un usuario de computadoras como tantos. Su sistema y el único que conoce es el popular Windows, no le trabaja mal, como en todo ya está adaptado a las virtudes y desaciertos del mismo. Sin embargo ya son varias las veces que escucha de un tal sistema llamado Ubuntu, conocido por su facilidad de uso y las libertades que da al usuario.

Ha escuchado de todo un poco: no tiene antivirus porque no lo necesita, no tiene más costo que el de descargarlo y grabarlo en un CD, es más lo puede copiar y regalar sin que esto se vea mal. Pero lo que más le ha llamado la atención es lo amigable que dicen que es, cualquiera puede usarlo le afirman.

Rodolfo entonces decide probar el tal Ubuntu, aprovecha un festival de instalación donde amablemente le instalan el sistema en su máquina. Lo prueba, se ve muy bonito, trae muchas aplicaciones, puede navegar en Internet, y se mueve rápido. Pero claro, como es de esperar surgen múltiples inquietudes. Por ejemplo Rodolfo se percata de que el teclado virtual del Banco Nacional no funciona adecuadamente, entonces pregunta a través de un foro de Ubuntu donde le responden:

- Ahh, en este caso debes usar el plugin Java de Sun Microsystems en lugar del plugin libre que trae Ubuntu. El teclado virtual usa bibliotecas no libres y nos obliga a usar esta otra opción.
- Ok, no se ve difícil, ¿qué debo hacer? - pregunta Rodolfo
- ¡Sencillísimo!, primero haces un sudo add-apt-repository "deb http://archive.canonical.com/ubuntu lucid partner" para añadir el repositorio parther de Cannonical, por supuesto seguido de un sudo aptitude update, entonces ya puedes hacer un sudo aptitude -y install sun-java6-plugin. ¡Ah! y no olvides hacer un sudo aptitude -y remove icedtea6-plugin para que quites el otro plugin.
- Que tuanis -piensa Rodolfo con un tanto de ironía- ¿No se supone que Ubuntu es para “seres humanos”?

Quizás hubiera sido más conveniente responder algo como: te vas a Orígenes del Software, marcas el repositorio parther, al cerrar te pregunta si quieres recargar la información acerca del software disponible entonces le dices que si. Luego te vas al Gestor de Paquetes Synaptic, instalas el paquete sun-java6-plugin y desinstalas icedtea6-plugin. ¡Listo! Todo sencillo, de manera gráfica como Rodolfo está acostumbrado a hacer las cosas y como espera seguir haciéndolas.

Por otro lado tenemos el caso de Nancy, una chica que, al igual que Rodolfo, no tiene mucho conocimiento técnico en cuando a computadoras pero, a diferencia, quiere aprender a hacer las cosas como su amigo Mario, todo un experto en lo que a computadoras se refiere.

A Nancy no le importa invertir un poco más de tiempo en aprender a hacer las cosas como lo hacen los expertos: escribiendo comandos para ejecutar acciones o modificando archivos de configuración con el editor de texto para definir la funcionalidad de su sistema. A ella no le importa que le sugieran las opciones que para muchos se verán extrañas, luego de una o dos preguntas de más a la comunidad y unas cuantas búsquedas en Internet probablemente ya tendrá una idea de lo que está haciendo y se sentirá complacida.

No hay duda de la eficiencia del soporte que brindan las diversas comunidades de Software Libre a los usuarios, sin embargo pareciera que no hemos aprendido a diferenciar un Rodolfo de una Nancy, de hecho difícilmente brindamos espacios para Rodolfos.

Rodolfo es una persona que podría contribuir enormemente a la comunidad, quizás es diseñador, músico, pedagogo o tal vez orador. Es decir perteneciente a un área ajena a la computación pero por ello un excelente complemento para este gran mundo que llamamos Software Libre o bueno, vamos un poco más allá, Cultura Libre.

Al ver tal respuesta (y posiblemente otras más de este tipo) Rodolfo se percató de que esto no es lo suyo, o por lo menos así se lo hicieron ver. Por supuesto los cuestionamientos sobre la facilidad que le prometieron no se hicieron esperar. No dejemos que los Rodolfos se vayan frustrados llevándose con sí lo que pudieron ser grandes aportes a la comunidad.

Tecla de Windows

Tecla Windows: abre y cierra el menú de inicio.

Tecla Windows + E: abre el explorador de archivos.

Tecla Windows + R: abre ventana ejecutar.

Tecla Windows + F: abre la ventana buscar.

Tecla Windows + D: minimiza o restaura todas las ventanas a la vez.

Tecla Windows + L: bloquea la estación de trabajo.

Tecla Windows + U: abre el administrador de utilidades.

Tecla Windows + M: minimiza todas las ventanas.

Tecla Windows + Shift + M: deshace la minimización de las ventanas.

Tecla Windows + F1: abre la ventana de ayuda y soporte técnico.

Tecla Windows + Tecla Pause/Break: abre la ventana de propiedades del sistema.

Tecla Windows + Tecla Tab: se mueve entre las diferentes aplicaciones en la barra de tareas y con la barra espaciadora se activa la aplicación seleccionada.

Tecla Windows + Tecla Ctrl + F: abre la búsqueda de equipos.

Tecla Windows + Tecla Ctrl + Tecla Tab: permite moverse entre pestañas de una aplicación.

lunes, 12 de julio de 2010

Bloqueo de USB

Hola que tal Gente ... este es un proyecto que realice en mi trabajo,
como muchos tenemos el problema que los usuarios meten las memorias usb, y sabra Dios en donde mas las habran metido, por lo que tal vez la galeria de virus que traen es muy buena, para evitarme este problema, hice un programa que me bloqueara solo las memorias usb; las impresoras, mouse, y demas accesorios usb si se pueden accesar.


El programa necesita ejecutarse una sola vez y lo que hace es:
- Crea un registro en el que hace que se inicie junto con Windows
- Deshabilita los puertos USB; Bloquea el registro, y cambia el nombre de los archivos que contienen los drivers, por lo que si es la primera vez que se conecta la memoria no lo va a instalar, y si ya estaba instalado, no lo permite por que el registro esta deshabilitado.
- Tanto la ruta como la contraseña son fijas, es decir, no se pueden cambiar, al menos que se cambie desde código.
- Para habilitar los puertos, es necesario dar clic derecho en él, este estará iconizado (al lado izquierdo del reloj)
- Al introducir la contraseña este mostrara un botón para habilitar el puerto, y entonces si puedes conectar la memoria USB
- La próxima vez que se inicie, este deshabilitará los puertos USB solo para memorias


aqui les dejo el enlace...



http://cid-dd6c7076675d0866.office.live.com/self.aspx/P%c3%bablico/Programas%20Varios/UsbLocal.rar


el programa se tendria que poner en "C:\Archivos de Programa\" para que se ejecute siempre desde ahi.....



el programa esta hecho en delphi 7.0, por lo que aqui les dejo el código
unit FUsb;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Registry,ShellAPI, StdCtrls, ExtCtrls, TlHelp32, Buttons;

const
WM_ICONTRAY = WM_USER + 1; // Mensaje definido por el usuario

type
Tusbs = class(TForm)
BHabilitar: TButton;
BDeshabilitar: TButton;
Pass: TEdit;
Minimizar: TButton;
BMostrar: TButton;
Timer1: TTimer;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure MinimizarClick(Sender: TObject);
procedure BMostrarClick(Sender: TObject);
procedure Icontray(var Msg: TMessage); message WM_ICONTRAY;
procedure BDeshabilitarClick(Sender: TObject);
procedure BHabilitarClick(Sender: TObject);
procedure PassKeyPress(Sender: TObject; var Key: Char);
procedure Timer1Timer(Sender: TObject);
Procedure MadrearArchivo(Sender: TObject);
Procedure ComponerArchivo(Sender: TObject);
private
{ Private declarations }

public
{ Public declarations }
end;

var
usbs : Tusbs;

NotifyIconData : TNotifyIconData;
Hecho : Boolean;
Intentos: Integer;
SearchRec: TSearchRec;

implementation

Uses PopupMenu1;
{$R *.dfm}

{-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+
este proceso cambia el nombre del usbtor para
que no se instale la memoria usb
-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+}
Procedure Tusbs.MadrearArchivo(Sender: TObject);
Var
lpFileOp: TSHFileOpStruct;
ArchivoABuscar1,ArchivoABuscar2:String;
Begin
ArchivoABuscar1:='C:\WINDOWS\inf\usbstor.inf';
If FindFirst(ArchivoABuscar1, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Self.Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:\WINDOWS\inf\usbstor.inf' + #0#0);
lpFileOp.pTo := PChar('C:\WINDOWS\inf\usbstorinf.Txt' + #0#0);
lpFileOp.fFlags:= FOF_SIMPLEPROGRESS or FOF_FILESONLY;
lpFileOp.fAnyOperationsAborted := FALSE;
lpFileOp.hNameMappings := nil;
lpFileOp.lpszProgressTitle := PChar('Trasladando archivos al disco D' + #0#0);
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.inf a usbstorinf.Txt');
end
Else
Begin
ArchivoABuscar1:='C:\WINNT\inf\usbstor.inf';
If FindFirst(ArchivoABuscar1, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:\WINNT\inf\usbstor.inf' + #0#0);
lpFileOp.pTo := PChar('C:\WINNT\inf\usbstorinf.Txt' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.inf a usbstorinf.Txt');
End;
End;



ArchivoABuscar2:='C:\WINDOWS\inf\usbstor.PNF';
If FindFirst(ArchivoABuscar2, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:\WINDOWS\inf\usbstor.PNF' + #0#0);
lpFileOp.pTo := PChar('C:\WINDOWS\inf\usbstorPNF.Txt' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.PNF a usbstorPNF.Txt');
End
Else
Begin
ArchivoABuscar2:='C:\WINNT\inf\usbstor.PNF';
If FindFirst(ArchivoABuscar2, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:\WINNT\inf\usbstor.PNF' + #0#0);
lpFileOp.pTo := PChar('C:\WINNT\inf\usbstorPNF.Txt' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.PNF a usbstorPNF.Txt');
end;
End;

End;
{-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+
Regresa a la nomralidad los archivos para que se
instalen las memorias
-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+-*/+}
Procedure Tusbs.ComponerArchivo(Sender: TObject);
Var
lpFileOp: TSHFileOpStruct;
ArchivoABuscar1,ArchivoABuscar2:String;
SearchRec: TSearchRec;
Begin


ArchivoABuscar1:='C:\WINDOWS\inf\usbstorinf.Txt';
If FindFirst(ArchivoABuscar1, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:\WINDOWS\inf\usbstorinf.Txt' + #0#0);
lpFileOp.pTo := PChar('C:\WINDOWS\inf\usbstor.inf' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstorinf.Txt a usbstor.inf');
End
Else
Begin
ArchivoABuscar1:='C:\WINNT\inf\usbstorinf.Txt';
If FindFirst(ArchivoABuscar1, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:\WINNT\inf\usbstorinf.Txt' + #0#0);
lpFileOp.pTo := PChar('C:\WINNT\inf\usbstor.inf' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstorinf.Txt a usbstor.inf');
End;
end;


ArchivoABuscar2:='C:\WINDOWS\inf\usbstorPNF.Txt';
If FindFirst(ArchivoABuscar2, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:\WINDOWS\inf\usbstorPNF.Txt' + #0#0);
lpFileOp.pTo := PChar('C:\WINDOWS\inf\usbstor.PNF' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstorPNF.Txt a usbstor.PNF');
end
Else
Begin
ArchivoABuscar2:='C:\WINNT\inf\usbstorPNF.Txt';
If FindFirst(ArchivoABuscar2, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:\WINNT\inf\usbstorPNF.Txt' + #0#0);
lpFileOp.pTo := PChar('C:\WINNT\inf\usbstor.PNF' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstorPNF.Txt a usbstor.PNF');
end;
end;

End;

procedure Tusbs.Icontray(var Msg: TMessage);
var
CursorPos : TPoint;
begin
if Msg.lParam = WM_RBUTTONDOWN then begin
GetCursorPos(CursorPos);
usbs.Show;
end else
inherited;
end;



{procedimiento para habilitar o deshabilitar el usb}
procedure EnableUSB(Value: Boolean);
begin
with TRegistry.Create do
try
RootKey:= HKEY_LOCAL_MACHINE;
if OpenKey('\SYSTEM\CurrentControlSet\Services\USBSTOR',TRUE) then
begin
if Value then WriteInteger('Start',3)
else WriteInteger('Start',4);
CloseKey;
end;
finally
Free;
end;
end;

{procedimiento para hacer que el programa se inicie con windows}
procedure RunForEver(pCaption, pPath : String);
var Registro :TRegistry;
begin
//pCaption es el caption del programa, y path la ruta completa donde se encuentra el .exe
Registro:=TRegistry.create;
Registro.RootKey := HKEY_LOCAL_MACHINE;
If Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run\',FALSE) then
If Not (Registro.ReadString(pCaption) = pPath) Then
Registro.WriteString(pCaption, pPath);

Registro.Free;
end;

{Al Crearse la forma}
procedure Tusbs.FormCreate(Sender: TObject);
begin
{ Desabilitamos el Puerto USB}
EnableUSB(False);
{mandamos llamar el procedimiento para que truene los archivos}
MadrearArchivo(Sender);
{Activamos el programa para que se inicie con windows}
RunForEver('Usb.exe','C:\Archivos de Programa\Usb.exe');

end;

{Oculta la Aplicacion de la barra de tareas}
procedure Tusbs.FormShow(Sender: TObject);
begin
ShowWindow(application.Handle, SW_HIDE );
Intentos:=0;
Pass.Text := '';
end;
{*******************************************************
BOTON PARA MINIMIZAR LA PANTALLA
*******************************************************}
procedure Tusbs.MinimizarClick(Sender: TObject);
begin
usbs.Hide;
with NotifyIconData do begin
hIcon := Icon.Handle;
StrPCopy(szTip, Application.Title);
Wnd := Handle;
uCallbackMessage := WM_ICONTRAY;
uID := 1;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
cbSize := sizeof(TNotifyIconData);
end;
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
end;
{*******************************************************
BOTON PARA QUITAR EL ICONO DE LA BARRA DE TAREAS
*******************************************************}
procedure Tusbs.BMostrarClick(Sender: TObject);
begin
Show;
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData); //para quitar el icono de la barra de notificación
end;

procedure Tusbs.BDeshabilitarClick(Sender: TObject);
begin
EnableUSB(False);
MadrearArchivo(Sender);
BHabilitar.Visible :=False;
end;

procedure Tusbs.BHabilitarClick(Sender: TObject);
begin
EnableUSB(True);
ComponerArchivo(Sender);
end;

procedure Tusbs.PassKeyPress(Sender: TObject; var Key: Char);
begin
If Intentos >= 3 Then
MinimizarClick(Sender);
If key=#13 Then
If pass.Text ='entra2' Then
BHabilitar.Visible := True
else
Begin
BHabilitar.Visible := False;
Intentos := Intentos +1;
End;
end;

procedure Tusbs.Timer1Timer(Sender: TObject);
begin
If Hecho =False then
Begin
MinimizarClick(sender);
hecho:=True;
end;

end;