Mostrando postagens com marcador XP. Mostrar todas as postagens
Mostrando postagens com marcador XP. Mostrar todas as postagens

Domingo, 6 de Julho de 2008

Backup de chaves específicas do registro, em batch.

Eu não sei se isso resolve o problema que Silvinho disse ter no meu post anterior sobre o Registro, mas pode ser útil para outras pessoas.

Desde o Windows 3.1 regedit.exe aceita alguns parâmetros por linha de comando, mas isso só passou a ser realmente útil a partir do Windows 95. Eu falei sobre os parâmetros em 1999 (putz, faz tempo...) e até a última versão do Win9x você ainda conseguia manipular o registro pelo DOS puro.

O que vou explicar aqui só funciona no Windows XP, mas também pode ser feito no Windows 9x mudando-se algumas coisas.

O regedit.exe do Windows XP ainda aceita os parâmetros, mas fica parecendo que não, porque ele não aceita mais o parâmetro "/?" para exibir as opções disponíveis. Eu imagino que isso seja para manter compatibilidade com aplicações antigas mas não incentivar seu uso, porque no Windows XP o jeito oficial de manipular o Registro pela linha de comando é pelo programa REG.EXE.

Se você precisa gravar por script uma determinada chave do Registro em arquivo, basta usar o seguinte comando:

REG EXPORT [nome do arquivo] [caminho da chave]

Nota: REG.EXE suporta os "apelidos" padrão para as chaves do registro, que vou usar aqui para encurtar as linhas, mas você pode usar o caminho expandido.

Digamos que você queira ter um backup dessas duas chaves:

HKEY_CLASSES_ROOT\*\shellex
HKEY_LOCAL_MACHINE\System\Altiris


Basta um arquivo .bat assim:

del *.reg
REG EXPORT "HKCR\*\shellex" shellex.reg
REG EXPORT "HKLM\System\Altiris" altiris.reg
no exemplo acima, os arquivos serão criados na pasta corrente, mas você pode forçar a criação numa pasta específica:
del c:\backup\*.reg
REG EXPORT "HKCR\*\shellex" c:\backup\shellex.reg
REG EXPORT "HKLM\System\Altiris" c:\backup\altiris.reg

Lembre-se: Se houver espaços nos caminhos o uso de aspas é imprescindível

No fim do batch você pode concatenar todos os backups em um único arquivo backup.reg:

copy shellex.reg+altiris.reg backup.reg


Exemplo completo de backup (backup.bat):

del *.reg
REG EXPORT "HKCR\*\shellex" shellex.reg
REG EXPORT "HKLM\System\Altiris" altiris.reg
copy shellex.reg+altiris.reg backup.reg


Como restaurar

Restaurar a partir dos backups é simples na maioria dos casos, mas nem sempre. Se sua intenção é copiar os dados de um computador para outro, ou se precisa restaurar valores que podem ter sido modificados, basta clicar duas vezes no arquivo backup.reg.

Ou por script: regedit backup.reg

Mas existem problemas:

1) Dependendo da chave, você pode se deparar com uma mensagem do tipo:
Não é possível importar c:\backup.reg: nem todos os dados foram gravados com êxito no Registro. Algumas chaves estão abertas pelo sistema ou outros processos.
Para gravar nessas chaves, o jeito mais simples e garantido é fazê-lo pelo Modo de Segurança.

2)Por default a importação feita só adiciona ou modifica conteúdo. Nada é excluído. Isso é bom na maioria dos casos, mas se por exemplo você quiser se livrar de entradas maliciosas na chave RUN, uma importação simples não vai mudar nada

Para se certificar que valores alienígenas sejam excluídos, você deve apagar a chave inteira antes da importação.
REG DELETE "HKCR\*\shellex" /f

O "/f" (de "force") força a exclusão sem fazer perguntas. Óbviamente é bom ter certeza de estar fazendo isso na chave certa


E para importar:
REG IMPORT backup.reg

Exemplo completo (restore.bat):
REG DELETE "HKCR\*\shellex" /f
REG DELETE "HKLM\System\Altiris" /f
REG IMPORT backup.reg

Manipulando erros

Você está se metendo com o Registro e não vai querer que erros passem despercebidos. É aconselhável que você pelo menos termine cada batch com um comando pause para examinar se tudo correu bem. Mas como REG.EXE suporta errorlevel, você pode criar uma manipulação de erros mais elaborada, se achar que vale o trabalho.

Quinta-feira, 3 de Julho de 2008

Como abrir regedit.exe em uma chave específica

Se você é um power user (a maior parte dos leitores deste blog é) deve usar muito regedit.exe para inspecionar ou fazer alterações no Registro do Windows e por esse motivo já deve ter sentido falta de um jeito de fazer o Editor do Registro se lembrar das chaves que você consulta mais. Ou mesmo de um jeito de entrar com uma chave através de copiar e colar.

Regedit.exe apenas se lembra da última chave visitada. Se você precisa consultar uma chave qualquer, precisa ir clicando até ela, o que é no mínimo maçante.

Por exemplo, tente ir até a seguinte chave (que nem é das mais difíceis):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

Outro dia falarei sobre a possibilidade de ter "favoritos" no Regedit. Hoje vou apenas mostrar o método mais simples que encontrei para abrir o Regedit direto em uma chave específica através de copiar e colar.

A dica foi dada nesta página do Experts Exchange:

Com a ajuda do Notepad, salve em um arquivo com extensão ".vbs" (digamos: regedit.vbs) o seguinte texto:


Set WshShell = CreateObject("WScript.Shell")
Dim MyKey
MyKey = Inputbox("Digite ou cole o caminho")
MyKey = "My Computer\" & MyKey
WshShell.RegWrite "HKCU\Software\Microsoft\W
indows\CurrentVersion\Applets\Regedit\Lastkey",MyKey,"REG_SZ"
WshShell.Run "regedit", 1,True
Set WshShell = Nothing


Quando você clicar duas vezes nesse script uma caixa de diálogo irá aparecer pedindo o caminho. Basta colar e dar OK que o regedit será aberto na chave indicada. É importante que o regedit esteja fechado antes de você rodar o script, ou isso não funcionará.

Coloque um atalho para o script onde achar mais conveniente.

ATENÇÃO: Se você executar o arquivo e ele abrir no Bloco de Notas em vez de exibir a caixa de diálogo, você não é o tipo de usuário que deveria estar lendo essas instruções ;)

Como funciona:

Ao fechar, regedit.exe sempre grava o caminho para a chave aberta em

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Lastkey

e consulta o conteúdo dessa chave ao iniciar para determinar que chave abrir automaticamente. O que o script faz é gravar em "lastkey" o caminho fornecido por você antes de chamar regedit.exe.

Quarta-feira, 2 de Julho de 2008

O genial Direct Folders

Analisando os outros programas do desenvolvedor do Teracopy eu não me interessei por nenhum deles baseado apenas no que li em suas descrições, mas uma série de elogios interessantes que li no blog do desenvolvedor despertaram minha curiosidade pelo Direct Folders.

E acabei descobrindo que era justamente algo que eu esperava há muito tempo.

1) Imagine essa situação, que deve ser familiar para a boa parte dos meus leitores: Você está manipulando um DVD-Video qualquer no HDD (depois da gravação, authoring, RIP, edição, transcoding, o que seja...) , está com o Windows Explorer aberto na pasta onde está o filme e quer abrir o resultado em algum programa, como o PowerDVD. Isso em geral requer dois passos: executar o programa através dos menus e depois usar o mecanismo OPEN do programa para achar os arquivos que você quer abrir. O fato de que você estava agorinha na pasta onde está o filme não ajuda em nada você a achá-lo, usando os mecanismos padrão do Windows. Não adianta apontar para a janela do Explorer ao lado e dizer ao programa: "está aqui, ó!".

Nota: Eu não estou falando de abrir os VOBs, porque basta clicar duas vezes neles. Para executar um DVD-Video como se deve (menus, etc), pelo menos no PowerDVD 5, você precisa usar o comando "Open DVD file on hard disk drive" do programa.

Usando o DF: Ao abrir uma caixa de diálogo para escolha de arquivos, basta clicar duas vezes com o botão esquerdo em um espaço vazio dela para abrir o menu do Direct Folders. Por ele você tem acesso a todas as pastas por onde você andou recentemente com o Explorer e até uma lista de pastas favoritas criadas por você. Clique em um item e a caixa de diálogo vai até aquela pasta;


2) Ou imagine que você gosta de usar o Explorer no modo "detalhe", mas o programa nunca lembra disso e sempre abre suas caixas Open e Save no modo lista (ex: Notepad, MtkTool, etc, etc...) ? Nota: Isso não é exatamente culpa do programador, pois muitos ambientes de programação não oferecem um método simples de se determinar essas características.

Usando o DF: Pelo menu Configure... você pode definir um tipo de exibição global e também individual a ser forçado para cada aplicação. O DF simplesmente monitora o programa e quando este abre uma caixa de diálogo o DF envia uma mensagem padrão do Windows para definir o modo de exibição;

3) O programa insiste em ter uma pasta default e nunca lembrar a última pasta usada (vmware server 1.04)?

Usando o DF: Para cada programa, você pode definir facilmente uma pasta fixa ou que os diálogos sempre abram na última pasta usada pelo programa. Assim aquelas aplicações que sempre abrem o comando "open" onde você não quer podem ser "domadas".


O Direct Folders tem diversas outras facilidades. Só mesmo usando para entender.


Problemas até agora:

  • Não funciona muito bem se você estiver usando múltiplos monitores. O recurso de auto-ajuste do tamanho das caixas de diálogo pode fazer a caixa abrir em um monitor diferente de onde está o programa. Eu ainda não consegui determinar por que só acontece algumas vezes.

Sábado, 28 de Junho de 2008

Como rodar O Quinto Elemento (jogo) no Windows XP

O erro ao tentar rodar O Quinto Elemento em qualquer PC rodando Windows XP:

FifthElement Error

The driver of a PowerVR card 3D card has been detected, but the hardware couldn´t be initialized.

Please remove the file 3GL.DLL from your WINDOWS and WINDOWS\SYSTEM directory and try again.


Mas não existia o menor sinal do tal arquivo 3GL.DLL em qualquer parte no computador. E nenhuma das máquinas sequer passou a 100 metros de uma placa PowerVR em sua existência.

A solução é apresentada no final desta página. Simplesmente extraia as DLLs deste ZIP no seu diretório Windows. Eu não gosto desse tipo de coisa, por isso extraí no diretório do EXE do jogo, e também funcionou.

Terça-feira, 24 de Junho de 2008

Logon Wallpaper Changer v0.1

Uma cliente tem um notebook onde o papel de parede está configurado com uma foto do marido e filhos e me perguntou durante uma visita como se configurava o que era exibido brevemente durante o logon, que ainda exibia a logomarca da Compaq. Realmente, o Windows não tem um mecanismo próprio para se determinar esse wallpaper e não conheço nenhum programa que faça isso. Fiz uma busca, mas não encontrei nenhum programa cuja descrição desse a entender que tinha esse recurso.

Esse papel de parede é o que aparece:

  • Durante o logon inteiro se você estiver com a tela de boas vindas (welcome screen) desligada;
  • Brevemente ao dar logon se a tela de boas vindas estiver ligada (após o logo do XP e antes da mensagem "O Windows está sendo iniciado", por exemplo);
  • Teclando CTRL-ALT-DEL duas vezes na tela de boas vindas (exibe a tela de logon clássica);
  • Sob a mensagem "O Windows está sendo encerrado", se a tela de boas vindas estiver desligada;

Você pode trocar isto:



Por algo assim:



Numa pesquisa rápida eu descobri que isso é definido no Registro em :
HKEY_USERS\.DEFAULT\Control Panel\Desktop\Wallpaper
HKEY_USERS\.DEFAULT\Control Panel\Desktop\TileWallpaper
HKEY_USERS\.DEFAULT\Control Panel\Desktop\WallpaperStyle


Como eu queria dar à cliente a opção de poder mudar o papel de parede à vontade, sem depender de mim, e também como exercício de programação, eu criei um pequeno utilitário que permite a um usuário qualquer com privilégio de Administrador (quase todo mundo) fazer essa configuração:




Apesar de simples, o programa ainda tem umas limitações:
  • Apesar de exibir se um papel de parede está definido como "lado a lado" ou "esticado" e poder gravar uma nova configuração, dá muito trabalho exibir isso. Assim a imagem vai sempre aparecer ajustada ao tamanho da figura do monitor, mesmo que na verdade ela vá aparecer de outra forma;
  • Não aceita imagens JPG (apesar do que aparece na imagem acima), porque o o Windows espera um BMP. Eu poderei fazer a conversão e aceitar imagens JPG em uma versão futura.
Como o que esse programa faz é bem besta mesmo, deve existir algum freeware da área de wallpapers ou mesmo de tweaking que faça isso, de forma até melhor. Por favor, quem conhecer um se manifeste nos comentários :)

Domingo, 22 de Junho de 2008

Direct3D não disponível (not available)

Eu estava testando a viabilidade de rodar os jogos de Tomb Raider sob Windows XP (a maioria deles é para Windows 9x). Nenhum deles rodou. Não me lembro do comportamento de todos, mas Tomb Raider 4 acusava um erro genérico em tomb4.exe e apenas uma das versões me deu uma pista (acho que foi Tomb Raider Legend), acusando o erro SYS_ERROR_D3D_CREATE_DEVICE.

Cenário:

  • MSI MS-7021 com 1.5GB de RAM;
  • ATI Radeon Saphire 9550 em modo dual monitor (1280x1024 + 1280x1024);
  • Windows XP Professional SP2 sem updates;
  • DirectX 9.0c;
Rodei a ferramenta de diagnóstico do DirectX (dxdiag.exe) e ela acusou que DirectDraw e Direct3D estavam ativados, mas ao tentar rodar os testes de Direct3D, também acusou erro. Vou chamar isso de "Problema 1".

Nesse ponto eu já sabia que o problema estava na máquina e não nos jogos.

Eu tentei diversas coisas, incluindo umas bem simplórias:
  • Instalar versões mais antigas ou mais novas do Catalyst, incluindo a 8.6;
  • Instalar o driver do chipset (Via 4-In-1);
  • Desligar e religar a aceleração de hardware;
  • Desligar o monitor secundário;
  • Mudar resolução;
Houve um ponto logo no início dos testes em que a coisa descambou de vez. Tanto DirectDraw quanto Direct3D passaram a acusar "não disponível" e o desenho de janelas no Windows ficou leeento demais. Vou chamar isso de "Problema 2". Eu "reverti" o driver usando o próprio mecanismo do XP para isso e o Problema 2 foi corrigido, embora o Problema 1 persistisse. Mas com a continuação de minhas tentativas o Problema 2 voltou e o vídeo ficou "esculhambado" de vez.

Felizmente, havia uma solução:
  • Rodei o Catalyst Uninstaller - Mesmo sendo uma versão de 2005, funcionou;
  • Ao reiniciar, o XP começou redetectando minha placa de vídeo como "standard", mas achou sozinho o CD original da Saphire no drive e fez a instalação do driver correto;
Após isso, imediatamente os problemas 1 e 2 sumiram (não precisei instalar ou reinstalar nada). E agora todas as versões de Tomb Raider de 1 a 7 estão rodando sob Windows XP nesse PC.

Coisas que não fiz, em nenhum momento:
  • Mexer no setup do BIOS;
  • Tentar instalar/reinstalar/desinstalar o DirectX.

Sábado, 21 de Junho de 2008

Rodando Need For Speed 2 e FIFA 98 no Windows XP

Na verdade, esses programas não tem problemas para rodar no XP. Mas se você não estiver usando Windows XP dificilmente vai ter memória suficiente instalada para se deparar com o problema.

Se ao rodar, der a seguinte mensagem de erro:

initmem - INSUFFICIENT MEMORY TO CONTINUE
FILE win\initmem.c LINE 242

(o número depois de LINE pode variar)

Reduza a quantidade de memória no PC (eu sei que a mensagem dá a entender o oposto). O jogo não roda se a soma de memória física + memória virtual (arquivo de paginação) resultar em mais de 2.3 ou 2.4GB. Você pode reduzir o tamanho do arquivo de paginação antes de rodar o jogo.

Meus testes (apenas com o NFS2):

PC1

  • 1.5GB + 1000MB = Erro
  • 1.5GB + 900MB = OK
PC2
  • 1GB + 1400MB = Erro
  • 1GB + 1300MB = OK

Sábado, 14 de Junho de 2008

XP reiniciando sozinho pouco após exibir a tela de logon

Essa foi a primeira vez que vi algo parecido. Após chegar à tela de Boas Vindas (Welcome Screen) esperando pelo nome e senha do usuário percebia-se uma grande atividade do HDD (até aí, normal) e após um intervalo variável de tempo a tela de Boas Vindas era apagada, o wallpaper da Compaq aparecia por alguns segundos e o Windows reiniciava sozinho, sem dar qualquer mensagem. A cliente me disse que o notebook ficava em loop aparentemente permanente, mas se você tivesse paciência eventualmente conseguia entrar no Windows. Segundo o testemunho, uma vez levou duas horas e em outra levou um dia inteiro. Estava de um jeito que ela deixou o notebook ligado (e logado) por dias com medo de não conseguir entrar de novo no Windows e atrapalhar seu trabalho, já que ela não estava conseguindo sincronizar um horário de visita comigo.

Não importava se você digitava a senha ou não, ou mesmo se apertava CTRL-ALT-DEL duas vezes para exibir a tela de logon clássica. Após um intervalo variável de tempo o Windows geralmente (mas nem sempre) reiniciava sozinho e sem explicação. Às vezes dava para achar que algo que você havia feito (ou deixado de fazer) permitira o logon, mas era apenas coincidência, porque fazendo ou não de novo, do mesmo jeito, o Windows ainda reinciava.

Só tinha um jeito de entrar nesse Windows que funcionava em todas as tentativas: o Modo de Segurança.

Depois de desativar a reinicialização automática, pude ver que havia uma mensagem de erro:

STOP: c000021a {Erro fatal do sistema}
O processo do sistema Windows Logon Process foi finalizado de forma inesperada com status de 0xc0000005 (0x00000000 0x00000000)
O sistema foi desligado

Pesquisando com a ajuda do Google encontrei várias pessoas com o mesmo problema, mas nenhuma solução clara. Então eu estudei cuidadosamente esta página da Microsoft sobre o problema e cheguei até o arquivo Drwtsn32.log, que estava com 57MB. Como eu não estava com o Large Text File Viewer à mão e o arquivo era relativamente pequeno, abri no Wordpad mesmo. Demorou, mas com alguma paciência consegui encontrar o cabeçalho do último erro (os destaques em negrito são meus):

Exceção de aplicativo:
Aplicativo: \??\C:\WINDOWS\system32\winlogon.exe (pid=756)
Data e hora: 13/6/2008 às 00:05:26.937
Número da exceção: c0000005 (violação de acesso)

*----> Informação do sistema <----* Nome do computador: R4000 Nome de usuário: SYSTEM Identificação de sessão de terminal: 0 Número de processadores: 1 Tipo de processador: x86 Family 15 Model 31 Stepping 0 Versão do Windows: 5.1 Versão atual: 2600 Service Pack: 2 Tipo atual: Uniprocessor Free Empresa registrada: Proprietário registrado: Luciana *----> Lista de tarefas <----* 0 System Process 4 System 660 smss.exe 724 csrss.exe 756 winlogon.exe 772 avgrsx.exe 848 services.exe 860 lsass.exe 1000 Ati2evxx.exe 1028 svchost.exe 1036 logonui.exe 1160 svchost.exe 1200 svchost.exe 1268 svchost.exe 1380 svchost.exe 1632 GbpSv.exe
1760 drwtsn32.exe
A visão de Winlogon.exe e Gbpsv.exe (o famigerado G-Buster Browser Defense) no mesmo log de erro, mais a descrição dos possíveis motivos do erro dada pela MS me deram um estalo. Coloquei o HDD do cliente no meu desktop, dei boot por outro HDD e apaguei a pasta C:\Arquivos de Programas\Gbplugin (os arquivos desta pasta só podem ser apagados a partir de outra instalação do Windows).

Problema resolvido. De volta ao notebook, o Windows passou a funcionar como deveria.

Menu Autoplay com itens faltando ou totalmente vazio

O cliente me chamou para resolver um problema e acabei esbarrando em outro completamente distinto da reclamação. Quando eu colocava um de meus CDs era esse o menu Autoplay que aparecia:



Quando eu colocava o meu pendrive até apareciam várias opções, mas faltavam os "handlers" default "Abrir pasta para exibir arquivos" e "Nenhuma Ação". Na imagem abaixo, as opções quando o Autoplay está OK:



Eu tentei consertar isso usando as opções do próprio Windows, mas clicando com o botão direito no drive de CDROM - Propriedades - Execução Automática - Conteúdo Misto, era isto que aparecia, sem opção para Restaurar padrões:




Quando deveria estar pelo menos assim:



Eu tentei o Autoplay Repair Wizard, da própria Microsoft, mas apesar do programa dizer que encontrava um problema e que não podia resolvê-lo, eu não estava confiante de que fosse o meu. Tentei as opções de Autoplay do X-Setup, mas nada mudou. Então eu esbarrei em um usuário de fórum dizendo que tinha resolvido seu problema com o "Autoplay Repair". pelo nome me pareceu que ele estava falando do programa da Microsoft, mas a descrição do que ele fez não batia. Então eu procurei por "Autoplay Repair" e encontrei este programa. A exigência de instalar o .NET 2.0 na máquina do cliente só não me fez desistir dele porque o testemunho do usuário batia com meu problema e eu estava sem opções.

Mas imediatamente após executar o programa pela primeira vez percebi qual era o problema do cliente:




O tal Adobe Photoshop Album Starter Edition já está na minha lista de "badware" há algum tempo por variados motivos. De cara eu pensei: é ele!. Cliquei com o botão direito sobre o item e escolhi "Erase Completeley...".

Problema resolvido (requer reiniciar o Windows).

O problema é semelhante a este outro. A simples presença de um "handler" mal comportado no Registro impede vários outros handlers relacionados de aparecerem.

Sexta-feira, 9 de Maio de 2008

Como criar seu próprio CD de boot do XP SP3

Ter o SP3 como um instalador separado é bom quando você quer atualizar um sistema que já está pronto e funcionando. Mas e se você quiser fazer uma nova instalação ou consertar uma instalação bichada do XP que nem dá boot? Instalar o SP2 e depois instalar o SP3 por cima é viável mas contraproducente.

A solução para isso é simples. Você pode integrar o SP3 ao seu CD do XP, criando um novo CD que para todos os efeitos práticos é um CD do Windows XP SP3. Não é que o SP3 vá ser instalado automaticamente após a instalação normal. Nada disso. A integração substitui todos os arquivos e configurações padrão por suas versões atualizadas já na criação do CD.

E isso é feito de forma quase que completamente automática pelo freeware nLite.

Como o nLite serve para muito mais que apenas fazer essa integração (slipstream) você pode acabar se perdendo em opções desnecessárias. Se for o caso, siga este tutorial, que mostra apenas o necessário para fazer a integração.

Eu já fiz o meu CD e já instalei em um PC cobaia aqui sem qualquer problema. Eu usei um CD do SP2, mas a integração deve funcionar com qualquer versão de 32 bits do XP.

A instalação completa levou 21 minutos em um notebook ACER Aspire 4520 (Turion 64 com 1GB de RAM).

Nota 1: É recomendável que você faça o slipstream do XP em uma máquina rodando XP e não em uma máquina Vista. Não deveria ter nada a ver o SO onde se faz a integração com o conteúdo dela, mas estão havendo problemas.

Nota 2: Se você estiver usando uma versão pirata do Windows com serial "blacklisted", vai ter problemas.

Quinta-feira, 8 de Maio de 2008

Links oficiais para o SP3 do Windows XP PT-BR


Ainda ontem eu procurei isso até no site da Microsoft e só conseguia achar um arquivo em PDF com as virtudes do SP3. Hoje que eu não estava procurando, praticamente esbarrei neles.

Não é beta, nem "Release Candidate". É a coisa final e oficial mesmo.

Atenção: A versão ISO não é um CD de boot. Trata-se apenas de uma imagem de CD com autorun que contém a versão EXE e mais 65MB de outras coisas. Portanto se você está atrás do "mais completo" baixe a versão ISO e ignore a versão EXE.

09/05/08: O SP3 ainda vem com o IE6 e o WMP9. Se você quiser o IE7 ou o WMP11 vai ter que instalar por fora.

Como abrir um arquivo texto de 3.8GB...

...sem ter que esperar um dia inteiro!

Se você já tentou abrir um arquivo grande (uns 60MB ou mais) no Notepad ou no WordPad já percebeu que a experiência não é das melhores. Imagine então tentar visualizar o conteúdo de um arquivo de estúpidos 3.8GB!

Eu tive esse problema hoje. Estou investigando o problema de um cliente e cheguei até o arquivo drwtsn32.log, que deveria ter uns poucos MB mas chegou a absurdos 3.8GB em menos de 15 dias de instalação do XP. Só o tamanho exagerado do arquivo, cuja função é ajudar a rastrear problemas, já estava criando outros problemas: drwtsn32.exe estava praticamente travando o computador toda vez que era evocado e por isso nem chegava a alimentar o log do Visualizador de Eventos (eventvwr.exe). E eu precisava ver que aplicação estava fazendo isso com data e hora de quando começou para comparar com outros logs do Windows. E para isso eu tinha que visualizar o conteúdo daquele arquivo.

Só consegui com o freeware Large Text File Viewer. Quando o arquivo é aberto o programa começa a indexá-lo. Um processo que levou 2m58s para as 32.8 milhões de linhas do arquivo de 3.8GB, mas enquanto o arquivo está sendo indexado você já pode ir vendo a parte do arquivo que está pronta, por isso nem senti que o processamento estava ocorrendo em background. O consumo de memória é mínimo, reportado como 37MB de Virtual Size e 6.7MB de Working Set (Process Explorer) mesmo com um arquivo imenso desses aberto.

Sexta-feira, 18 de Abril de 2008

Recuperando a senha do Incredimail, do jeito difícil.

A solução para isso é simples, mas a precipitação fez com que eu complicasse meu cenário. Eu precisava instalar uma impressora de rede para um usuário, mas não estava conseguindo porque esse usuário estava fazendo logon em um domínio NT e ele não tinha permissão para instalar impressoras nem "herdava" as impressoras instaladas pelo administrador local. Mas o problema não terminava aí: não existia na empresa um servidor para o domínio onde o funcionário estava logando!

Na verdade, não existia controlador de domínio algum na empresa.

Meu melhor palpite é que houve uma tentativa de se instalar um controlador de domínio nessa empresa, mas ela fracassou por um motivo qualquer (nem imagino qual tenha sido), o controlador de domínio foi removido e alguns funcionários continuaram logando "às cegas" graças às credenciais armazenadas em suas máquinas. Metade dos usuários nessa empresa estava logando no domínio inexistente e metade estava logando diretamente no PC. E nenhum deles estava ciente das diferenças e consequências. Nem os donos da empresa sabiam de que "domínio" eu estava falando.

Eu poderia ter contornado o problema simplesmente criando um novo perfil local para esse funcionário e esquecido o perfil anterior que logava no domínio, mas como a máquina não era usada para nada complicado e o programa mais importante da empresa é uma aplicação DOS no servidor cuja "instalação" não vai muito além de colocar um atalho no desktop do usuário, decidi aproveitar para consertar a bagunça e desconectei essa máquina do domínio inexistente.

Errei feio.

O recepcionista usava o Incredimail para receber e-mails da empresa no perfil conectado ao domínio. Ao desconectar do domínio seu perfil ficou inacessível. Até aí tudo bem, porque configurar o incredimail no seu novo perfil e importar as mensagens do outro perfil, mesmo sem poder logar nele, era fácil. Mas o que eu não antecipei é que nem ele nem ninguém na empresa sabia qual era a senha do e-mail!

O Incredimail havia sido configurado anos atrás e ninguém sequer sabia quem havia feito a configuração. Assim como ninguém soube me dizer quem era que fazia a administração do domínio deles na internet (e tinha a senha mestre do servidor de e-mail).

Sentiu o drama?

É claro que alguém pagava pela manutenção do domínio e em algum momento (ou dia) revirando documentos eu ia acabar descobrindo como chegar ao responsável e definir uma nova senha. Mas este era o meu "plano B". O "plano A" ainda era consertar a minha "caca" no próprio PC.

Existem programas na internet que se propõem a recuperar especificamente as senhas do Incredimail e conseguem fazer isso mesmo para contas onde você não está logado. Eu testei a versão trial do Incredimail Password Recovery e consegui ver os três primeiros caracteres da senha: "rec" (de "recepcao"), mas isso não foi suficiente porque eu testei e, ou a senha não era "recepcao", ou haviam mais caracteres.

Seria mais fácil se eu pudesse logar no perfil anterior, mas perdi completamente o acesso a ele ao desconectar do domínio. Desconectar de um domínio inexistente é fácil. Mas reconectar...

Então eu experimentei o seguinte (digamos que o usuário se chamava Roberto):

  • Entrei como Administrador;
  • Criei um usuário "teste";
  • Dei logoff como Administrador e entrei como "teste" para que o perfil fosse criado;
  • Dei logoff como "teste" e entrei como Administrador;
  • Copiei (não movi) todo o conteúdo (incluindo arquivos ocultos e protegidos) da pasta C:\Documents and settings\Roberto para C:\Documents and settings\teste;
  • Dei logoff como Administrador e entrei como "teste". O desktop já mostrava que eu estava com a configuração perdida do usuário Roberto. Ao entrar no Incredimail eu tive acesso a todas as mensagens e pude enviar e receber e-mails normalmente;
A minha "caca" estava consertada, mas era uma gambiarra (maior do que eu pensava, como explicarei adiante). Eu ainda não sabia qual era a senha.

Só que tendo acesso ao perfil as coisas ficam bem mais fáceis. Baixei o freeware Mail Passview, que me mostrou imediatamente qual era a senha do Incredimail: "recepcao2004".

Testei com o novo perfil do usuário. Funcionou. Então eu fiz a importação das mensagens do perfil anterior (o próprio Incredimail faz isso) e foi aí que eu percebi que a gambiarra que eu havia feito era maior do que eu imaginava.

Eu fiz a importação apontando para a conta "teste" porque eu havia recebido mensagens por ela e por isso imaginei que ela deveria ter mais mensagens que a cópia original em "Roberto". Grande engano. Apesar de ter recebido as mensagens logado como "teste", as mensagens foram armazenadas no perfil "Roberto".

Faz sentido.

Mas bastou apagar as mensagens importadas de "teste" e fazer a importação do perfil "Roberto" para que tudo ficasse do jeito que deveria ser.

Depois que o plano A deu certo eu segui com o plano B e verifiquei no Whois do registro.br que o servidor DNS do domínio é da inter.net, logo a hospedagem devia ser deles. Quando eu mencionei "inter dot net" para um dos donos ele lembrou e respondeu: "ahhh... inter ponto net. É isso mesmo".

Na pior das hipóteses bastaria contatá-los para conseguir novas senhas.

Sexta-feira, 11 de Abril de 2008

Excel travando o PC inteiro ao salvar planilhas

Cenário:

  • Microsoft Office 2003;
  • Windows XP SP2 com atualizações desligadas;
  • PC conectado a um servidor de domínio Windows 2003;
  • Arquivos localizados em um compartilhamento no servidor.


Ao salvar o arquivo, seja com Salvar ou com Salvar Como, o indicador de progresso na barra de status do Excel ia até 100% e dali não saía. O Excel parava de responder e o Windows Explorer também. Dar CTR-ALT-DEL exibia a janela de opções, mas pedir para exibir o Gerenciador de Tarefas não tinha qualquer efeito. O PC ficava completamente inutilizado exigindo apertar o botão de reset.

Durante o travamento, abrir o arquivo salvo a partir de outro PC na rede mostrava que todas as alterações haviam sido salvas no disco antes do Excel parar de responder.

Deixei o Process Explorer rodando no PC, configurado para mostrar o histórico de CPU dos processos e pedi que o cliente reproduzisse o erro. Quando o Excel parou de responder um simples ALT-TAB me permitiu ver a janela do Process Explorer, que continuava funcionando normalmente. Os gráficos mostraram que a CPU permaneceu livre antes e depois do problema. Como não era um problema de CPU, desconfiei da rede.

Porém, salvar arquivos manualmente na mesma pasta e a partir do mesmo PC usando o Windows Explorer não criava problema algum. O cliente já estava há dias com o problema e a pesquisa que fiz no Google sobre o Excel travando ao salvar arquivos só indicava cenários que nada tinham a ver com o problema do cliente. Foi só na terceira vez que estive lá que percebi ao fazer logon no servidor uma inesperada mensagem de erro sobre Arquivos Offline. Fiquei desconfiado, porque aquele PC não deveria estar com esse recurso ativado (até mesmo porque não tinha qualquer utilidade no desktop do cliente) e quando fui checar que arquivos estavam envolvidos encontrei três arquivos desconhecidos e justamente um arquivo que estava sendo salvo quando o Excel parou de responder.

Mesmo sem entender a relação do problema com o fato de Arquivos Offline estar ativado, desliguei o recurso. O problema sumiu imediatamente.

Continuo sem entender o motivo do travamento. Fiz uma pesquisa incluindo o dado novo e encontrei pelo menos uma pessoa com o mesmo problema. E este outro caso que é bastante similar e dá uma possível solução para o caso em que o uso de Arquivos Offline seja necessário.

Quinta-feira, 10 de Abril de 2008

UPnP paralisando a conexão de banda larga

Um amigo meu teve esse problema no PC dele. Aconteceu há meses, mas só agora estou lembrando de postar aqui.

Ele tem uma pequena rede na empresa dele com três PCs conectados à internet através de um roteador speedstream 5200. Das três máquinas, apenas a dele andava com problema de conexão. Ele não conseguia navegar tranquilamente nem 5 minutos que de repente ficava leeeento demais.

Parado, quase andando.

Eu estive lá de passagem pelo menos três vezes antes de localizar a causa do problema. Eu já havia desligado todos os programas e serviços estranhos ou dispensáveis, mas nada ajudava. Bastava iniciar um download no Rapidshare e acompanhar. Começava estável baixando a 60KB/s e nem cinco minutos depois simplesmente parava. O ícone da rede na barra de tarefas parava de piscar indicando que nada mais estava sendo transferido. E não adiantava esperar, porque só voltava ao normal resetando o modem ou reiniciando o PC.

Porém os outros PCs navegavam e baixavam arquivos normalmente.

Na última vez é que vi uma mensagem em um balão na barra de tarefas que nunca vira antes (em nenhum lugar), de que o Windows localizara um dispositivo UPnP compatível: o Speedstream 5200. Eu não sabia o que fazer com isso e não via necessidade de usar UPnP se o modem já estava configurado corretamente. E a única coisa que eu realmente sabia sobre UPnP naquela data é que segundo Steve Gibson era melhor manter o recurso desativado.

Eu não estava particularmente preocupado com segurança (essa é a crítica ao UPnP feita por Gibson), mas como eu estava desconfiado de que poderia haver uma relação entre as duas coisas, executei o programa UnPnP.exe na máquina do meu amigo para desligar o recurso.

O problema sumiu imediatamente e não voltou a incomodar.

Acompanhando o consumo de CPU de uma aplicação

Ou, "como o GMAIL atrapalha a execução de filmes."

Este post começou a ser escrito em 19/01 e só agora tive tempo de terminar o texto.

Há semanas, todas as vezes que eu tentava assistir a um filme no PC, tinha problemas com engasgos periódicos na execução. Foi fácil descobrir que isso estava ocorrendo porque a CPU estava "topando" brevemente em 100%, mas por que isso estava acontecendo se a execução do filme não requeria mais que 40% da CPU? Anteontem eu perdi a paciência e resolvi investigar.

O Windows 2000/XP já embute um recurso para que você possa acompanhar o consumo de CPU do sistema inteiro, mas embora isso seja muito útil não basta quando você precisa descobrir qual aplicação entre as muitas rodando está dando "picos" de consumo aparentemente aleatórios. Seria necessário que o Windows mostrasse um gráfico do consumo por aplicação, mas ele mostra apenas o consumo instantâneo, que não ajuda muito quando você está procurando por algo que dura uma fração de segundo.

Por sorte, o freeware Process Explorer (vou chamar de "PEx" daqui em diante) também faz isso.

Talvez vocês se lembrem da última vez que o PEx me ajudou a resolver um problema. Na ocasião eu ainda não sabia que era possível ver mais informações sobre cada processo. Basta clicar duas vezes sobre seu nome pra ver muito mais informação. Mas para o propósito deste post, vou me limitar a exibir o "Performance Graph".



Olhando rapidamente você pensaria que é o monitor do Windows XP, mas note o ícone do Firefox, o título da janela e as outras abas. Existem aperfeiçoamentos sutis: passe o mouse sobre o gráfico e você vai ver o percentual exato de CPU naquele instante e também a hora em que ocorreu . Esse pequeno detalhe já nos permite medir o tempo entre uma ocorrência e outra.

Assim como o monitor do XP, é possível ajustar a largura da janela para ter mais tempo de gráfico.



Você pode ter uma janela aberta para cada processo, se quiser. Mas se você está tentando descobrir que processo está dando picos repentinos de consumo de CPU e tem uns 20 processos em execução (meu PC tem 32 neste exato momento) abrir uma janela para cada um deles não é nada conveniente (mas eu o faria, se fosse o único jeito). Mark Russinovich deve ter a mesma opinião porque o PEx tembém facilita sua vida nesse sentido.

Clique em View -> Select Columns -> Process Performance
Marque CPU History

Uma nova coluna aparecerá, com o histórico de CPU de cada processo!



Eu deixei o PC parado por vários minutos antes de tirar os snapshots deste post. Veja como o Firefox é a única aplicação mal comportada do grupo.

Como no PEx você pode excluir, mover e redimensionar colunas, o acompanhamento fica ainda mais fácil:



Não era exatamente culpa do Firefox. Eu saí fechando aba por aba (geralmente nunca tenho menos que 40 abertas ao mesmo tempo) e acabei descobrindo que era a aba do Gmail. Eu não sei se existe alguma configuração do Gmail que minimize isso e o jeito no momento está sendo fechar a aba do Gmail enquanto assisto a qualquer filme.

Segunda-feira, 7 de Abril de 2008

Colocando o XP em duas ou mais sub-redes ao mesmo tempo.

E com uma placa de rede apenas.

Geralmente quando você pensa em dar a um mesmo PC Windows dois ou mais endereços IP em redes diferentes pensa logo em acrescentar adaptadores de rede. Mas isso é dispensável desde o Windows 2000. A maioria das pessoas não precisa disso, mas entre outras coisas essa capacidade do XP me permite configurar modems ADSL e roteadores seja lá qual for o IP sem precisar me desconectar da minha rede habitual.

O principal motivo para você não conseguir encontrar essa opção é estar usando DHCP. A opção de acrescentar mais endereços IP a uma conexão de rede do XP só é habilitada se você já estiver usando um endereço IP fixo.

No exemplo abaixo, eu já estou conectado a uma sub-rede 192.168.0.x e vou me conectar também a uma sub-rede 10.1.1.x



Se você estiver usando DHCP o botão Adicionar aparece desabilitado.



Coloque o endereço que você deseja assumir na outra sub-rede.



O resultado:



Depois do procedimento do exemplo acima você passa a acessar computadores ou dispositivos nas sub redes 10.1.1.x e 192.168.1.x. E ser acessado por eles. Teste com o comando PING.

Editado: Esqueci de avisar que se você for se referir aos PCs pelos seus nomes, a coisa pode não funcionar. Usando esse recurso você precisará se referir aos PCs pelos seus endereços.

Sábado, 5 de Abril de 2008

Windows XP: de 21 a 25 minutos para permitir logon

E não, não era um Pentium MMX 233 com 16MB de RAM. Era um P4 2.4GHz com 1GB de RAM :)

Pois é. Encontrei esse problema ontem no servidor de um novo cliente. Ao reiniciar, o servidor levava 50 segundos só para aparecer o logotipo animado do XP. Depois de 1m20s piscava uma tela exibindo a mensagem de logon e em seguida passava mais de 20 minutos exibindo a mensagem "O Windows está sendo iniciado".

Eu só desconfiei de que não estava travado porque ninguém sequer sabia desse problema (a não ser talvez o técnico que eu estava substituindo) porque o servidor nunca era desligado pelo cliente, mas teria desligado (e travado) em caso de falta de energia. Depois de cinco minutos esperando eu fui jantar e quando voltei a mensagem tinha finalmente desaparecido. Eu tinha que resolver outros problemas no servidor e sair para jantar a cada boot, fosse qual fosse a razão, estava fora de cogitação.

No dia seguinte eu comecei a trabalhar nisso e cronometrei. Da última vez que passei na sala do servidor e ainda estava "travado" tinham se passado 21 minutos. Quando voltei aos 25 minutos o XP finalmente tinha destravado.

Ao destravar aparecia a mensagem que havia "piscado" aos 1m20s. Era a tela de logon tradicional preenchida com o usuário "Administrador" e uma mensagem "Não foi possível fazer logon no sistema..." sugerindo que a senha estava errada. Ao dar OK aparecia a tela de boas vindas e bastava clicar no usuário "Administrador" para entrar sem precisar nem de senha.

As conclusões óbvias:

  • O XP estava configurado para logon automático usando o usuário "Administrador";
  • A senha fornecida para o logon automático estava errada.
A relação entre isso e os mais de 20 minutos de espera ainda era nebulosa, mas como era a única pista que eu tinha, lá fui eu resolver.

Executei o comando control userpasswords2
Desmarquei a opção "os usuários devem digitar um nome de usuário..."


Nota: a imagem acima é do meu Windows e não do cliente.

Ao clicar em OK, perguntou usuário/senha, coloquei "Administrador" e deixei as duas caixas de senha em branco (eu vou deixar para definir novas senhas depois);




Ao reiniciar, o logon automático funcionou e o boot passou a levar apenas 2 minutos.

O que eu suponho que aconteceu é o seguinte: Eu sou o terceiro técnico que essa empresa chamou, sendo que o segundo passou pouco tempo lá. O segundo possivelmente não sabia a senha definida para o servidor pelo primeiro e decidiu "limpar" a senha do Administrador para poder trabalhar. Isso permitiu fazer a administração do servidor, mas quebrou o funcionamento do logon automático. Por que isso levou a 20 minutos de espera eu ainda não faço a menor idéia.

O maior problema estava resolvido, mas ainda faltava a pausa de 50 segundos até exibir o logotipo animado. Descobri que o servidor tinha dois HDDs mas que apesar de ambos estarem sendo reconhecidos pelo BIOS, só um aparecia para o Windows. Ao remover o HDD "invisível" o tempo de boot caiu para 1 minuto.

O HDD estava com defeito.

Sexta-feira, 1 de Fevereiro de 2008

DirectX bagunçando o monitor secundário

Eu uso múltiplos monitores desde que o Windows 98SE trouxe esse suporte, mas só recentemente um problema que aparentemente sempre existiu passou a me incomodar: sempre ao entrar em um jogo DirectX em tela cheia o conteúdo do monitor secundário fica bagunçado. Tudo é deslocado para a direita e a resolução é modificada. Em quase 100% dos casos o monitor fica inútil durante o jogo.

Isso não me incomodava antes, porque quando eu estava jogando queria apenas jogar mesmo e podia desligar o monitor secundário. Mas agora eu quero poder jogar apenas enquanto espero um download ou outro processo demorado terminar ou mesmo quero poder jogar tranqüilamente por horas sabendo que se um e-mail interessante chegar eu vou ver rapidamente. Se eu usasse MSN, até haveria ainda outra razão, mas eu não uso nenhum software de IM.

Hoje eu decidi parar para pesquisar se havia uma solução, e em menos de cinco minutos encontrei um modo de contornar o problema. Curiosamente, a bagunça só ocorre em monitores configurados para estarem à direita do monitor principal. Então basta que antes de eu começar a jogar eu posicione o meu monitor secundário à esquerda (virtualmente) para que seu conteúdo não seja afetado pela entrada no jogo DirectX.

Este é o normal (ao menos para mim):


É assim que deve estar antes de iniciar o jogo:


É simples, rápido e sem efeitos adversos a não ser o fato de que até reverter você terà que movimentar o mouse para a esquerda para entrar em um monitor que está fisicamente à direita ;)

A outra solução é mudar a resolução do meu monitor principal para que seja igual à do jogo, antes de iniciá-lo. Mas para mim esse seria um remédio pior que a doença :)

Sexta-feira, 14 de Dezembro de 2007

Quando o teclado é melhor que o mouse

Não, eu não estou mudando de lado. Eu ainda acho que as interfaces gráficas facilitam muito o trabalho de quem usa computadores e detesto ter que digitar longas linhas de comando, até mesmo porque sou "dedógrafo" (ainda assim, digito mais rápido que muitos "datilógrafos" que já vi por aí). Mas existem situações em que digitar consegue ser mais eficiente (e às vezes até mais rápido) que fazer a mesma operação usando o mouse.

É o caso, por exemplo, de quem precisa usar o XP e o Vista.

Eu não pretendo sair do XP nem tão cedo, mas sou obrigado a me familiarizar com o Vista por causa da velocidade com que meus clientes estão comprando novos computadores com o novo SO. E uma das coisas que mais incomodam um usuário muito acostumado com o XP quando tenta usar o Vista é que muita coisa ou não está no mesmo lugar que estava antes ou mudou de nome. Até mesmo para explicar como se chega a uma configuração ficou mais problemático, porque é preciso lembrar de um caminho de mouse para o XP e outro para o Vista.

Mas você pode contornar o problema em muitos casos usando o teclado. E por conta disso a partir de hoje sempre que eu conhecer o nome do programa que leva diretamente à janela desejada no Windows, eu vou citá-lo no lugar de dar o caminho por mouse, da seguinte maneira:

[WIN+R] comando [ENTER]

por exemplo, para chegar à janela "Serviços" do XP o caminho por mouse (um deles) é este:

Botão direito em Meu Computador -> Gerenciar -> Serviços e Aplicativos -> Serviços

e por teclado:

[WIN+R] services.msc [ENTER]

As vantagens disso:

  • É um comando apenas para lembrar/explicar para diferentes versões do Windows.
  • Geralmente o que funciona no XP funciona desde o Windows 2000 até o Vista;
  • Não depende da língua do SO. Imagine achar o caminho com o mouse ao dar manutenção em um notebook com Windows em francês ou em alemão. Os comandos de teclado são sempre os mesmos.

A lista é muito grande e não creio que adiante tentar decorar, entretanto :)