quinta-feira, 15 de dezembro de 2011

Windows 7 - Quando uma unidade de DVD lê somente CD

Pode ter certeza que alguém já passou por isso.

Sabe aquela sua sobrinha chata, que chega na sua casa louca para gravar o DVD pirata da série Crepúsculo (ai vampiro, vampiro, vampiro, vampiro... vampiro?), ai ele não reconhece de jeito nenhum os DVDs?

Voce tirou do plástico umas nove mídias novinhas pensando que era algum pau, mas ai você coloca uma mídia de CD e funciona! Não aguentando mais sua sobrinha lhe torrando as paciências, voce chuta o computador, grita com a menina e seu cunhado manda você praquele lugar. Antes de pensar que está ficando maluco, o que pode estar com problemas é o seu Windows.


Se voce tem absoluta certeza que não é problema da sua unidade de DVD, você pode tentar os seguintes passos abaixo (em inglês, mas tenho certeza que você consegue se virar):

1) click the start menu
2) click on "run"
3) type "regedit" and click ok
4) go to string key "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
5) delete "upper filters" and "lower filters in the right side window.
6) right click my computer in the start menu.
7) click properties
8) go to the hardware tab
9) click device manager
10) expand the dvd/cdrom drives
11) right click the dvd rom and click uninstall
12) restart computer

Se realmente não funcionar, tente gravar ou ler um DVD de outro equipamento para ter certeza que não é sua unidade.

terça-feira, 29 de novembro de 2011

Scripting Fiad - Solicitar ação do usuário (Teclar Y/N) através do comando CHOICE

Quem nunca precisou automatizar alguma tarefa, através do bom e (muito) velho prompt de comando?

Algumas vezes é necessária a intervenção do usuário, para que ele pressione alguma letra/numero específico ou responda à pergunta Sim/Não.

Para isto, pode-se utilizar o comando CHOICE,  que possibilita um prompt para resposta.

Melhor que teoria, só a prática! Vejam abaixo:

CHOICE /c123456789

  • Para numeros ou letras e necessario o uso do /c que ira mostrar: [1,2,3,4,5,6,7,8,9]...
  • Sem o uso do comando /c, o CHOICE, mostrara o prompt: [Y,N]...

O comando CHOICE tem que vir sempre acompanhado do IF e ERRORLEVEL. que são complementos do comando, ou seja não funcionarão se aplicados sozinhos.

Exemplo abaixo:

@echo off
cls
echo Bem vindos ao show do Milhão!
echo Responda a pergunta abaixo para ganhar um milho grande

Echo O Justin Bieber é:
echo ---------------------------------------------------
Echo [1] Uma menina
Echo [2] Um afeminado
Echo [3] Lésbica

choice /c123
echo ---------------------------------------------------
if errorlevel 3 echo MILHOOOOOOOOO
if errorlevel 2 echo MILHOOOOOOOOO
if errorlevel 1 echo MILHOOOOOOOOO


Tirando a trolada com o Justin Biba, basta substituir pela pergunta pertinente à sua linha de comando.
No final, nos ERRORLEVELS, substitua o "echo MILHOOOOOOOOO" pelo comando que voce deseja que seja executado.
LEMBRE-SE! no caso de multipla escolha, coloque sempre a sequencia do ERRORLEVEL do MAIOR para o MENOR, como no exemplo acima (3, 2, 1). Caso contrário não funcionará.
Espero que tenha sido útil.

sexta-feira, 25 de novembro de 2011

Checkdisk Executa com erro todas as vezes que o computador reinicia (Windows 7)

Olá a todos! Quem trabalha ou quem usa Windows 7, uma hora ou outra, deve ter se deparado com aquele problema chato onde o CheckDisk (CHKDSK), toda vez que vai dar boot, faz que vai rodar e acaba dando um erro.

Pois bem, abaixo vai uma das possiveis soluções, mas que funcionou todas as vezes que tive que utilizar.

Inicie o prompt de comando (cmd) como administrador. Ao abrir a janela com o prompt, digite fsutil dirty query x: onde X: é o seu drive de boot (exemplo, C:). o FSUTIL, muito provavelmente vai lhe informar que está "sujo".

Em seguida, digite chkntfs /x c: . O  X diz ao Windows para NÃO checar aquele drive em particular no próximo boot. Então, reinicie seu computador, que o CheckDisk não irá rodar e irá iniciar com o Windows normalmente.

Uma vez carregado o Windows, abra novamente o prompt de comando como administrador e digite  chkdsk c: /r . Responda S ou Y quando solicitado para que este seja executado no próximo boot. Quando iniciado, o CheckDisk irá executar 5 passos e demorar aproximadamente UMA HORA, dependendo do tamanho do seu disco. Seja paciente e deixe o programa terminar.

Uma vez de volta ao Windows, abra novamente o prompt de comando como administrador, e veja se ainda há "sujeira" no disco, digitando fsutil dirty query c: que o Windows confirmará que os bits "sujos" não estão mais em seu drive.

Espero que tenha sido útil!!

Até a próxima

quinta-feira, 24 de novembro de 2011

Ativando Remote Desktop Connection no Windows 7 Starter, Home Basic e Home Premium

rdc

O Remote Desktop Connection é uma funcionalidade nativa nas versões do Windows, que permite o acesso a ambientes de trabalho remoto, permitindo assim gerir máquinas ou prestar assistência a utilizadores que estejam numa localização geográfica diferente.

No Windows 7, o RDC apenas está disponível nas versões Professional, Enterprise e Ultimate.
Fora do ambiente empresarial, praticamente todos os utilizadores usam a versão Home Premium do Windows 7, mas que, não têm esta poderosa ferramenta ativa nativamente.

Este tutorial explica como ativar esta funcionalidade nas versões Starter, Home Basic e Home Premium, recorrendo a um script desenvolvido por um anónimo. Além de activar o RDC nestas versões do Windows 7, este script, permite também manter ativa mais que uma sessão em aberto, sem que para isso tenha que desligar um outro usuário que esteja logado.

Em primeiro lugar, recomendo que criem um ponto de restauro antes de iniciar a execução do script, por forma a evitar eventuais problemas.O script pode ser baixado AQUI para o Windows 7 RTM ou AQUI para o Windows 7 Sp1 Uma vez, descompactada a pasta que contém o script e pastas necessárias, deverão clicar com o botão direito do mouse em install.cmd e executar como administrador. Caso possuam o UAC activo deverão dar a respectiva autorização clicando em Sim.hprdc0O Script depois de executado, abrirá uma janela do command prompt. Clicar em qualquer tecla para continuar.hprdc1No passo seguinte será apresentada a seguinte questão: “Do you wish to enable multiple sessions per user ?“. Seleccionar Y (Yes) seguido de Enter.hprdc2De seguida terão que responder a “Do you wish to enable blank password logon?”. Seleccionar novamente Y (Yes) seguido de Enter.hprdc3Após estes passos, o script irá ativar os ficheiros necessários e respectiva firewall, assim como os serviços necessários à execução do RDC. No final da configuração, pressionar qualquer tecla para finalizar.hprdc4E pronto, a partir de agora já poderá logar-se a outros ambientes de trabalho remotos do seu Windows 7 Home Premium. Este método foi testado nos seguintes sistemas operativos:Windows 7 Starter 32 & 64 BitsWindows 7 Home Basic 32 & 64 bitsWindows 7 Home Premium 32 & 64 bits. Espero que este tutorial seja útil! Todos os créditos do script são do seu criador.

sexta-feira, 18 de novembro de 2011

Extensible Firmware Interface (EFI)

Introdução
O Extensible Firmware Interface (ou simplesmente EFI) é uma tecnologia recente, que visa substituir o BIOS (Basic Imput/Output System) usado nos computadores. O BIOS foi lançado na década de 1980, no IBM PC AT e, sofrendo modificações, é utilizado até hoje. Mas, com as vantagens do EFI, essa "tradição" tende a mudar e é isso que este artigo mostrará nas próximas linhas.

O que é EFI
Como já dito, o EFI é uma tecnologia que visa substituir o tão tradicional BIOS dos computadores. No entanto, sua capacidade não se limita a isso. O EFI permite uma série de funcionalidades até então impraticáveis com o BIOS, como a possibilidade de atuar como gerenciador de boot em computadores com mais de um sistema operacional (substituindo o GRUB, o LILO e o Boot Magic, por exemplo), interface mais amigável (inclusive com uso de mouse), capacidade de desenvolvimento de drivers "multi-plataforma", carregamento mais rápido do sistema operacional, entre outros.
Se fizermos uma análise mais profunda, veremos que, na verdade, o EFI não vai substituir de maneira integral o BIOS, pois pelo menos os seus conceitos serão preservados. Sendo assim, podemos até interpretar o EFI como um novo tipo de BIOS.

O que é BIOS
Para uma melhor compreensão do EFI, é importante entender o que é BIOS:
O BIOS é um tipo de programa armazenado em memória ROM que informa ao processador como trabalhar com dispositivos essenciais, tais como teclado, unidades de disco, portas, etc. Como o BIOS lida diretamente com o hardware, sua programação é feita em Assembler, uma linguagem complexa, mas apropriada a esse tipo de aplicação.
Outra função do BIOS é a responsabilidade de permitir a inicialização do sistema operacional. Para isso, ele testa o hardware (por exemplo, checa se o teclado está conectado e emite uma mensagem de erro se não encontrá-lo), verifica a memória, entre outros. Essa fase é conhecida como POST (Power-On Self Test).

Na maioria dos computadores, se o usuário pressionar uma tecla especial - como F1, F2 ou Delete - assim que ligar a máquina, terá acesso a uma área gráfica chamada Setup. Por meio dela, é possível trabalhar com opções de configuração do hardware. Por exemplo, pode-se mudar a velocidade do processador, alterar o tempo de acesso à memória e executar operações mais simples, como fazer o computador reconhecer uma unidade de disco. O Setup está diretamente vinculado ao BIOS.
Mesmo tendo sofrido melhorias com o passar do tempo, o BIOS é uma tecnologia antiga, cujas limitações já são sentidas atualmente. Isso é perceptível, por exemplo, quando um novo padrão de hardware é lançado. Geralmente, a implementação do reconhecimento deste no BIOS é uma tarefa muito complexa.

Um pouco mais sobre EFI
Agora que você já sabe o que o BIOS faz, voltemos a tratar de EFI. Desenvolvido inicialmente pela Intel e contando com forte apoio da Microsoft, o EFI é um recurso que pode executar as funções do BIOS e ainda oferecer outras funcionalidades. Seu desenvolvimento é feito em linguagem C, o que por si só já é capaz de ampliar o seu leque de possibilidades. Além disso, o EFI é baseado em interfaces modulares, permitindo adicionar ou alterar recursos sem que seja necessário mudar toda a sua estrutura. Assim, tornam-se mais fáceis as tarefas de desenvolvimento e instalação de atualizações, por exemplo. Além disso, o risco de erros diminui, pois geralmente basta trabalhar apenas no módulo que está sendo criado ou modificado.
É evidente que o EFI é preparado para lidar com o hardware atual, isto é, não é necessário descartar dispositivos de hardware criados quando o EFI sequer era cogitado. Por exemplo, um processador Pentium 4 não precisa sofrer modificações para funcionar com EFI, já que este pode ser preparado para trabalhar com esse chip.
Essa compatibilidade, no entanto, já não ocorre com os sistemas operacionais. Estes sim precisam lidar de maneira diferente com o EFI, se comparado ao BIOS tradicional. O Windows XP, por exemplo, não suporta o EFI, assim como as versões de 32 bits do Windows Vista. Todavia, essa compatibilidade existe nas versões do Windows XP, Server 2003 e Vista baseadas na linha de processadores Intel Itanium. Usuários de Linux estão em situação mais cômoda: atualizações de versões do kernel não compatíveis com EFI podem resolver o problema.
Algo que agradou muito os desenvolvedores de hardware é a não dependência do EFI de uma saída VGA (Video Graphics Array) para testes. No BIOS tradicional, é necessário ter uma placa de vídeo para executar os testes, do contrário essa tarefa não seria possível. O EFI não possui essa dependência, possibilitando que o resultado do teste seja direcionado a um computador ou a um arquivo, por exemplo.
Outro recurso muito importante é a capacidade do EFI de lidar com instruções de 64 bits, característica já predominante nos processadores recentes da Intel e da AMD. Com o BIOS tradicional, é necessário ter uma versão para 32 bits e outra para 64 bits, dependendo do hardware ou da aplicação. Para saber mais sobre os bits dos processadores clique aqui.
A tecnologia EFI conta também com a capacidade de pré-inicialização. Com ela, o sistema operacional pode carregar ou atualizar recursos antes mesmo de entrar em total funcionamento. Essa característica pode permitir a criação futura de uma série de funcionalidades, como atualização automática do sistema operacional ou de um software antivírus, acionamento automático de um computador-espelho caso o primeiro apresente alguma falha, entre outros.
Ainda, o EFI permite o desenvolvimento de drivers de hardware independentes da plataforma. Isso porque, ao invés do sistema operacional ter que se comunicar diretamente com o hardware em questão, ele o faz por intermédio do EFI. Assim, basta que qualquer sistema operacional saiba "falar" com o EFI para que este faça o hardware desejado "entrar em ação".

Outra vantagem da utilização do EFI é o fato deste não precisar ser armazenado em chips CMOS (Complementary Metal-Oxide Semiconductor). Sua implementação pode ser feita diretamente no chip do firmware*. Além disso, pode-se armazenar recursos extras no disco rígido do computador e instruir o EFI a acessá-los. Se por algum motivo esses dados forem apagados, muito provavelmente será possível reinstalá-los, como se fosse reinstalado um driver de um determinado dispositivo em um sistema operacional.
* Firmware é uma espécie de software embutido em um hardware que serve para controlá-lo. Por exemplo, se você tem um aparelho que toca músicas no formato MP3, o software que permite a execução e que mostra as informações no visor é um firmware.


Finalizando
A proposta do EFI é substituir o BIOS tradicional, mas não se sabe ainda se essa tecnologia se tornará padrão, mesmo porque ainda está em tempo de tecnologias semelhantes ou melhores surgirem. No entanto, é indiscutível que o EFI é promissor, do contrário, empresas como Microsoft e Gateway não teriam interesse por ela.

A Apple, por exemplo, lançou em janeiro de 2006 uma versão do Mac que faz uso do EFI. Muito provavelmente isso ocorreu porque este é um dos primeiros computadores da empresa a utilizar um processador Intel, a principal responsável pelo EFI. No entanto, para a Apple ter aceitado tal tecnologia, é porque esta se mostra realmente viável e interessante.
Há muito o que ser debatido e há muito o que ser definido para que o EFI seja aceito pela indústria do hardware, mas isso pode acontecer em breve. Suas vantagens são inúmeras e não se limitam às citadas aqui. Além disso, já existe um grupo formado por diversas empresas para tratar da tecnologia: a UEFI (Unified Extensible Firmware Interface). Mesmo assim, a única certeza que se tem no momento é que o BIOS tradicional precisa mesmo "virar coisa do passado".

Esquema EFI

quinta-feira, 9 de junho de 2011

Isolamento de Driver de Impressão (Printer driver Isolation)

Oi Pessoal! Faz tempo que eu não posto né? Tantas mudanças...

Mas aqui estou eu novamente, com uma novidade muito legal que o Windows 7 e o Windows 2008 R2 trazem, o Isolamento de driver de Impressão! Veja abaixo artigo da MSDN (em  inglês)

Printer Driver Isolation


Printer driver isolation improves the reliability of the Windows print service by enabling printer drivers to run in processes that are separate from the process in which the print spooler runs. Support for printer driver isolation is implemented in Windows 7and Windows Server 2008 R2.
For Windows 7 and Windows Server 2008 R2, an inbox printer driver must support printer driver isolation and be able to run in an isolated process.

Previous Versions of Windows

In previous versions of Windows, including Windows Server 2008, printer drivers always ran in the same process as the spooler. Printer driver components that ran in the spooler process included the following:
  • Print driver configuration modules
  • Print processors
  • Rendering modules
The failure of a single print driver component could cause the print subsystem to fail, halting print operations for all users and for all print components.

New Versions of Windows

With Windows 7 and Windows Server 2008 R2, an administrator can, as an option, configure a printer driver to run in an isolated process--a process that is separate from the spooler process. By isolating the driver, the administrator can prevent a fault in a driver component from halting the print service.
For more information about the spooler functions, see Spooler Component Functions and Structures.

Driver Isolation Support in INF Files

By default, if the INF file that installs a printer driver does not indicate that the driver supports driver isolation, the printer class installer configures the driver to run in the spooler process. However, if the INF file indicates that the driver supports driver isolation, the installer configures the driver to run in an isolated process. An administrator can override these configuration settings and specify, for each driver, whether to run the driver in the spooler process or in an isolated process.
To support driver isolation, the INF file that installs a printer driver can use the DriverIsolation keyword to indicate whether the driver supports printer driver isolation. Setting DriverIsolation=2 indicates that the driver supports driver isolation. Setting DriverIsolation=0 indicates that the driver does not support driver isolation. Omitting the DriverIsolation keyword from the INF file has the same effect as setting DriverIsolation=0.

Spooler Functions for Driver Isolation Settings

The following table shows the spooler functions that an administrator can use to configure the driver-isolation settings.
Function name Operation
GetPrinterDataEx Get the driver-isolation settings for a printer.
SetPrinterDataEx Set the driver-isolation settings for a printer.
EnumPrinterDataEx Enumerate driver-isolation settings for a printer.
FindFirstPrinterChangeNotification
FindNextPrinterChangeNotification
Request notifications of changes to the driver-isolation settings for a printer.

The format for the data is as follows:
  • Driver in each group is separated by '\'
  • Each driver group is separated by '\\'
The first group loads the driver into the spooler processes. Each subsequent group loads the drivers in isolated processes per group. The second group is considered the 'shared' group in which other isolation-capable drivers are loaded by default.

Configuring Driver Isolation Mode through Administration

A computer administrator can use the Windows Print Management console or call the Windows spooler functions to configure the driver-isolation settings for each printer driver installed on a computer. The administrator configures the driver to use one of the settings listed in the following table.
Driver-isolation mode Meaning
Shared Run the driver in a process that is shared with other printer drivers but is separate from the spooler process.
Isolated Run the driver in a process that is separate from the spooler process and is not shared with other printer drivers.
None Run the driver in the spooler process.

Ideally, a printer driver is able to run in shared mode. That is, it runs in an isolated process shared with other printer drivers but separate from the spooler process. A driver might need to run in isolated mode if it can run in a process separate from the spooler process, but has difficulty sharing the process with other drivers. For example, a poorly designed driver might have file names that conflict with those of related drivers or of different versions of the same driver, or the driver might fault frequently or have a memory leak that interferes with the operation of other drivers that run in the same process.
To support troubleshooting, the domain administrator can disable the driver-isolation feature on a computer in the domain, or the administrator can force all of the printer drivers on the computer to run in isolated mode. In isolated mode, each driver must run in a process separate from the spooler and from the other printer drivers.
If driver isolation is disabled by group policy, the isolation is off for all printer drivers. If isolation is enabled, then the individual drivers are mode-checked. If a driver has isolation mode set, it runs in shared, isolated, or none mode, based on the registry entry. However, if the driver does not have isolation mode set and it is compatible with isolation, it runs in shared mode. If the driver is not compatible with the mode, the group policy override determines whether the driver runs in shared mode or none mode.
The following chart shows a decision map for choosing the driver isolation mode:


Flowchart for choosing the driver isolation mode Flowchart for choosing the driver isolation mode

Spooler Functions Allowed under Driver Isolation

Only specific functions are allowed under driver isolation.

Spoolss.dll Functions

The following functions are exported by spoolss.dll and are available to spooler plugins by linking to spoolss.lib.
AddMonitorW
AppendPrinterNotifyInfoData
ClosePrinter
DeletePortW
DeletePrintProcessorW
EndDocPrinter
EndPagePrinter
EnumFormsW
EnumJobsW
FlushPrinter
GetJobAttributes
GetJobAttributesEx
GetJobW
GetPrinterDataExW
GetPrinterDataW
GetPrinterDriverDirectoryW
GetPrinterDriverW
GetPrinterW
ImpersonatePrinterClient
OpenPrinterW
ReadPrinter
RouterCreatePrintAsyncNotificationChannel
RouterGetPrintClassObject
SetJobW
SetPrinterDataExW
SetPrinterDataW
StartDocPrinterW
StartPagePrinter
WritePrinter

WinSpool.drv Functions

The following functions are exported by winspool.drv and are available to spooler plugins by linking to Winspool.h.
AppendPrinterNotifyInfoData
ExtDeviceMode
ImpersonatePrinterClient
IsValidDevmode
PartialReplyPrinterChangeNotification
ReplyPrinterChangeNotification
RevertToPrinterSelf
RouterAllocBidiMem
RouterAllocBidiResponseContainer
RouterAllocPrinterNotifyInfo
RouterCreatePrintAsyncNotificationChannel
RouterFreeBidiMem
RouterFreeBidiResponseContainer
RouterFreePrinterNotifyInfo
RouterGetPrintClassObject
RouterRegisterForPrintAsyncNotifications
RouterUnregisterForPrintAsyncNotifications
Fonte: http://msdn.microsoft.com/en-us/library/ff560836(v=vs.85).aspx