Arquivo

Arquivo de janeiro, 2010

Mais um problema com o TVcenter no Seven.

12, janeiro, 2010 4 comentários

O TVCenter suporta o recurso de “arrastar a janela pela área cliente” ou seja, você pode arrastar a janela com o mouse clicando em cima da imagem exibida. Isso é especialmente importante no caso do TVcenter porque este oculta automaticamente a borda da janela e você acaba mesmo restrito a só poder arrastar pela área cliente.

Isso funciona normalmente no XP, mas no Seven com o DWM ligado uma coisa esquisita acontece. Só é possível arrastar o TVcenter pela imagem se um pedaço da janela estiver dentro do quadrante superior esquerdo da tela.

Para arrastar a janela na posição em que está acima é preciso aumentar a janela até que a barra de título apareça (característica do TVcenter), então arrastar pela barra de título até a nova posição e depois reduzir o tamanho da janela.

Se o DWM estiver desligado, aí funciona direito.

Categories: Compatibilidade Tags:

Virtualização do sistema de arquivos e Registro.

12, janeiro, 2010 Sem comentários

No geral, é uma providência ótima. Mas pode deixar um power user arrancando os cabelos.

Se um programa não foi marcado pelo seu desenvolvedor como compatível com o Windows Vista, é automaticamente considerado “legacy”. Quando um programa “legacy” sem privilégio de administrador tenta escrever em diretórios ou chaves do Registro restritas, o Vista/Seven redireciona automaticamente:

Operações no sistema de arquivos:

Armazenadas em: %appdata%\Local\VirtualStore\

Em pastas que tem uma cópia virtualizada aparece um botão no Explorer que leva até à cópia:

Operações no Registro:

Armazenadas em: %appdata%\Local\Microsoft\Windows\UsrClass.dat

(UsrClass.dat é um hive e pode ser editado offline)

A virtualização é ótima no sentido de não quebrar os programas “legacy” no Vista/Seven, mas no mínimo adiciona uma camada de complexidade indesejável. Por exemplo:

  • Agora existirão pelo menos uma cópia dos arquivos para cada usuário no PC. Quando deveria existir uma única cópia. E a aplicação não sabe disso;
  • Programas que aplicam patches, se rodando sem privilégios, podem acabar colocando a cópia corrigida em uma pasta virtualizada (não testado). E você vai insistir em rodar o executável original sem saber disso;
  • pode ser ruim rodar um mesmo programa uma hora com privilégios e outra hora sem.  – Quando um “legacy” roda sem privilégios e precisa atualizar um arquivo, o Windows virtualiza o arquivo protegido e é essa cópia que o legacy atualiza. Mas se depois você rodar o mesmo programa com privilégios, o Windows não vai buscar a cópia mais recente virtualizada e vai ler/escrever na cópia antiga protegida.
  • Pelo motivo acima, se você tem dois “legacy” que trabalham com os mesmos arquivos protegidos (podem até ser dois executáveis de um mesmo programa), os dois precisam trabalhar no mesmo nível de privilégio ou um não enxergará as modificações feitas pelo outro.

Você pode conferir outros problemas e possíveis soluções neste artigo da Knowledge Base. E para complicar, o Internet Explorer faz sua própria virtualização, que pode pegar até mesmo mestres como Mark Russinovich de surpresa.

Ao primeiro sinal de “lapsos de memória” por parte de um programa no Seven, eu recomendo que você dê uma olhada nos arquivos existentes em %appdata%\Local\VirtualStore\. Lá você pode encontrar um arquivo que esclareça o problema. Mas você não vai ter essa sorte se esse programa estiver virtualizando o Registro, porque hives não são assim tão fáceis de inspecionar.

Então, se você preza os cabelos que ainda tem, pode ser desejável na medida do possível não usar aplicações que virtualizam.

É fácil saber que aplicações estão usando virtualização.  Basta adicionar a coluna “virtualized” no Process Explorer: View -> Select Columns -> Process Image ->Virtualized

Para quem não está familizarizado com o Process Explorer: os destaques em roxo e amarelo são do próprio programa (criptografia e .NET, respectivamente). Ignore-os.

Eu insisto: a virtulização é um recurso muito bom do Vista/Seven que no geral te poupa de muito aborrecimento. Mas você precisa estar ciente de como a coisa funciona.

Categories: Virtualização Tags:

Fazendo o Delphi 7 rodar no Seven.

9, janeiro, 2010 32 comentários

Eu só uso duas versões do Delphi: a 5 e a 7. O Delphi 5 eu já havia colocado para funcionar sem maiores problemas, mas hoje eu precisei instalar o Delphi 7 e me deparei de cara com esta mensagem:


Eu já havia desistido do Nero 6 por esse motivo, mas não estou disposto a desistir do Delphi 7 sem briga (não é tão “fácil” de susbstituir). Fiz uma rápida pesquisa e com base no que li tomei as seguintes precauções:

  • Não deixei o programa instalar em “C:\Program Files”. Mandei instalar em C:\Delphi7. Também defini a pasta “Commom Files” para “C:\Delphi7\Commom Files”. Isso porque o Seven é realmente intolerante com programas que querem mexer em C:\Program Files. E o Delphi 7 precisa mexer em seus diretórios de instalação;
  • Defini a segurança de C:\Delphi7 como “controle total para todos os usuários”. Ou seja: segurança alguma.
  • E, claro, marquei o Delphi32.exe para rodar como Administrador.

O programa parece estar funcionando. Só o tempo dirá.

Categories: Compatibilidade Tags:

Como reiniciar o DWM (Aero) sem reiniciar o Windows.

9, janeiro, 2010 2 comentários

Eu estou fazendo algumas experiências aqui e descobri que em alguns casos “matar” o processo DWM.EXE faz com que ele seja reiniciado automaticamente. Mas às vezes ele permanece “morto”. Eu não fiz testes abrangentes, mas notei que se eu matar o processo pelo Process Explorer ele sempre volta, mas se eu matá-lo usando a API do Windows (via programa em Delphi) ele só volta uma vez.

Eu encontrei a solução para os casos em que o DWM não volta aqui:

Para reiniciar o processo, abra um prompt elevado e dê os seguintes comandos em sequência:

net stop uxsms

net start uxsms

Você pode também colocar os comandos acima em um arquivo .bat. Mas precisa lembrar de rodá-lo sempre como Administrador.

Isso deve funcionar em qualquer situação em que você precise reiniciar o Aero.

Categories: Sem categoria Tags:

Como desativar o UAC para um programa específico.

5, janeiro, 2010 14 comentários

Toda pesquisa que eu havia feito mostrava que isso era impossível. Eu achava que deveria ser possível, usando algum tipo de “credencial suprema” marcar um programa que precisa rodar como Administrador como confiável e fazer com que ele parasse de ativar o UAC. Não encontrei nada.

Então o leitor Marcelo me deixou esta dica em outro post.

É tão simples que ler sobre o método (eu nem tentei usar o programa disponível lá, até mesmo porque o Avast reclama que é maligno) foi fascinante. Tudo o que você precisa fazer é o seguinte:

  • Agendar uma tarefa que aponta para o programa, sem “agendar” nada realmente.
  • Tomar o cuidado de marcar “Run with highest privileges”.
  • Criar um atalho que roda essa tarefa manualmente.

Simples e eficiente. Criei uma tarefa chamada “NotepadElevado” apontando para o notepad e depois um atalho com o seguinte target:

schtasks.exe /run /tn “NotepadElevado”

Rodar o atalho abre uma janela do Notepad com privilégios de Administrador, sem ativar o UAC.

Para mim só essa possibilidade pode facilitar muito o uso do Seven no dia-a-dia. O UAC além de ser irritante pode fazer uma aplicação derrubar o Aero.

Configurações essenciais ou úteis:

Preocupado com a segurança disso?

É possível criar tarefas agendadas programaticamente e em seguida rodar essas tarefas silenciosamente. Disso eu já tinha certeza. Mas a criação pode ser feita sem privilégio de Administrador, assim como fazemos manualmente (note que a GUI do Agendador de Tarefas não roda elevada, mas cria tarefas que rodam elevadas)? A lógica dizia que não, porque se fosse possível já teria sido explorado por algum malware. Afinal uma busca por “Run with highest privileges” no Google me levou a esta página de 2007 onde o método já era explicado. Incidentalmente esse mesmo texto dá a resposta final ao explicar como tarefas podem ser criadas automaticamente com o Powershell. O Autor aproveita para deixar claro que “Schtasks must be run elevated to be able to create tasks”.

Categories: Sem categoria Tags:

Problemas com o feed do blog.

4, janeiro, 2010 Sem comentários

Eu encontrei um problema com o feed e temporariamente restringi seu uso. Eu vou conversar mais tarde com Saulo para ver o que pode ser feito. Isso não deve demorar mais que 24H para ser resolvido.

05/01/10: Temporariamente o acesso ao feed ficará restrito ao conteúdo integral dos últimos 10 posts.

Categories: Sem categoria Tags:

Rodar como administrador: efeitos colaterais

3, janeiro, 2010 Sem comentários

Aplicações elevadas podem perder a comunicação com aplicações não-elevadas. Por exemplo:

  • Não posso arrastar arquivos do Explorer para uma janela do Photoimpact 6 elevado;
  • DirectFolders 3.6 não-elevado não se agrega ao Delphi 5 elevado.

Isso provavelmente se deve ao recurso de segurança chamado User Interface Privilege Isolation (UIPI).

Infelizmente, o inverso também dá problemas. Se eu rodar o DirectFolders elevado ele passa a se agregar ao Delphi 5 elevado, mas não se agrega mais ao Explorer. Assim a única solução para o problema parece ser tentar fazer com que o máximo de aplicações rode sem privilégio de administrador (mesmo quando você confia nelas). É a melhor coisa a longo prazo, mas um “saco”.

Categories: Sem categoria Tags:

O humor do NoisNaTira:

2, janeiro, 2010 11 comentários

Não que eu acredite nisso, claro. Os que se apegam ao Linux por pura ideologia jamais vão “gostar” do Windows.

Categories: Sem categoria Tags:

Rodar como administrador: Não na inicialização.

2, janeiro, 2010 2 comentários

A não ser que a aplicação seja assinada.

Se você tem um programa que deveria estar rodando ao inicializar o Windows, mas não está e você já checou com o MSconfig ou o Autoruns e a linha de comando para ele está lá, verifique se o executável está marcado para rodar como Administrador. O Seven não executa nada assim na inicialização, nem dá qualquer aviso como acontecia no Vista (“O Windows bloqueou alguns programas…”). As únicas* soluções para isso são:

  • Conseguir uma versão assinada do programa;
  • Conseguir uma versão que não precise rodar com privilégios administrador;
  • Rodar o programa manualmente após inicializar o Windows.

* Leia os comentários.

Categories: Sem categoria Tags: