Saturday, 21 October 2017

Oshell Regwrite Binary Options


Descrição O método RegWrite é usado para gravar um valor para o registro do Windows. Parâmetros O parâmetro Name é uma string que especifica o valor ou a chave a ser escrita. O parâmetro Value especifica os dados a serem gravados no registro. O valor é convertido automaticamente para uma seqüência de caracteres quando Type é REGSZ ou REGEXPANDSZ e para um número inteiro quando Type é REGDWORD ou REGBINARY. O parâmetro Tipo opcional especifica o tipo de dados para o valor, as opções válidas são REGSZ, REGEXPANDSZ, REGDWORD e REGBINARY. Date: abril de 2001 De: Abid Hussain Para: ronoreilly Assunto: Como fazer seus programas executados na inicialização do Windows Como posso fazer o meu Programas começam programaticamente na inicialização do Windows Eu preciso usar chamadas de API ou modificar o registro Como faço isso com o código para que meus programas começam automaticamente sempre que o Windows for iniciado Há uma série de técnicas que permitem que um programa seja lançado automaticamente pelo Windows Na inicialização. Alguns destes (pelo menos na minha opinião) são bastante perniciosos. Você pode, por exemplo, usar o objeto TextStream no modelo de objeto FileSystemObject para escrever o caminho eo nome do programa para autoexec. bat. Esta é, porém, uma técnica herdada dos dias do DOS muitos usuários, quando eles decidem que não querem o programa carregado na inicialização, não é provável que saibam que eles devem verificar seu arquivo autoexec. bat. Uma alternativa ainda pior é usar as funções de arquivo de inicialização na API do Win32 para gravar as linhas Load ou Run do Win. ini. Na minha experiência, aplicações iniciadas desta maneira muitas vezes tendem a se comportar erraticamente. Os dois melhores métodos para iniciar automaticamente um programa no arranque são utilizar o registo ou a pasta de arranque do sistema. O método escolhido depende da facilidade com que você deseja torná-lo para o usuário remover o programa se ele ou ela decidir que ele não deve executar na inicialização do sistema. Usando a pasta de inicialização dá ao usuário mais controle para impedir que o programa seja executado na inicialização, o usuário só tem que remover seu atalho da pasta. Usando o registro torna menos acessível o usuário terá que estar familiarizado com a estrutura do registro e terá que saber como usar uma ferramenta de edição como RegEdit, a fim de impedir que o aplicativo seja executado na inicialização. Se você decidir usar o registro, você precisará tomar duas decisões importantes. Primeiro, você deve selecionar a chave do Registro na qual você irá gravar as informações de inicialização. Essa decisão depende em grande parte do caráter do aplicativo e do motivo pelo qual você deseja iniciá-lo na inicialização. Em segundo lugar, você precisa selecionar um método para gravar no registro. Vamos olhar para estas duas questões. Você pode executar uma aplicação automaticamente escrevendo uma entrada de valor (um par completo de nome / valor) para qualquer uma das seguintes chaves de registro (eu uso abreviaturas aqui para as chaves de nível superior): Inicia um programa automaticamente quando um usuário particular faz logon. Essa chave é usada quando você sempre deseja iniciar um programa quando um usuário específico estiver usando um sistema. Inicia um programa na próxima vez que o usuário fizer logon e remover sua entrada de valor do registro. Essa chave é normalmente usada por programas de instalação. Lança um programa automaticamente na inicialização do sistema. Essa chave é usada quando você sempre deseja iniciar um programa em um sistema específico. Inicia um programa da próxima vez que o sistema é iniciado e remove sua entrada de valor do registro. Essa chave é normalmente usada por programas de instalação. Lança um serviço (um serviço NT padrão ou um processo em segundo plano) automaticamente na inicialização. Um exemplo de um serviço é um servidor Web, como o Microsoft Internet Information Server. Lança um serviço (um serviço NT padrão ou um processo em segundo plano) na próxima vez que o sistema é iniciado e, em seguida, remove sua entrada de valor do registro. Em cada caso, você carrega seu aplicativo escrevendo um par nome / valor para a chave apropriada. O nome das chaves é arbitrário, desde que seja exclusivo entre as entradas de valor pertencentes a essa chave. O valor entrys é o caminho completo eo nome do arquivo a ser executado. Há também duas chaves adicionais, HKLMSoftwareMicrosoftWindowsCurrentVersionRunEx e HKLMSoftwareMicrosoftWindowsCurrentVersionRunOnceEx, que permitem controle mais fino sobre os aplicativos e componentes que são carregados e que, portanto, usar entradas de valor de registro adicionais. Estes são documentados no artigo Q232509 da Microsoft KnowledgeBase, sintaxe e sinalizadores utilizados para as chaves RunOnceEx e RunEx. Depois que você selecionou a chave para usar, você tem que selecionar um método de gravação para o registro. O método mais comumente usado é chamar as funções de registro na API Win32. Se você está interessado, estes são cuidadosamente documentados no meu livro agora fora de catálogo, dentro do Windows 95 Registry. Um método mais acessível (pelo menos na minha opinião) é acessar o registro usando o modelo de objeto Windows Script Host. Normalmente, você não pode associar o Windows Script Host com o Visual Basic, afinal, o Windows Script Host é projetado principalmente para ser invocado a partir de pequenos arquivos de script escritos em linguagens como VBScript ou JScript. No entanto, Windows Script Host expõe um modelo de objeto, e todos exceto o objeto Windows Script Host de nível superior (chamado WScript) pode ser instanciado de um programa Visual Basic. Para ligar antecipadamente ao Windows Script Host, basta adicionar uma referência ao Windows Script Host Object Model ao seu projeto. No modelo de objeto Windows Script Host, você deseja chamar o método RegWrite de objetos Shell. Sua sintaxe é: oShell. RegWrite strName, Value, strType onde oShell é uma referência a um objeto Shell do WSH e os parâmetros são os seguintes: O caminho completo do registro para a entrada de valor a ser gravada. Se strName termina em uma barra invertida, o método escreve para o valor padrão das chaves caso contrário, ele grava um valor nomeado indicado pela subseqüência que segue a última barra invertida. As três chaves de nível mais comumente usadas podem ser abreviadas como HKCR, HKCU e HKLM. O valor a ser gravado no Registro. Para executar um aplicativo na inicialização, este deve ser o caminho completo eo nome do arquivo do aplicativo a ser iniciado. O tipo de dados de Valor. O padrão é REGSZ (uma seqüência de caracteres com terminação nula), embora REGEXPANDSZ (uma seqüência com macros de sistema incorporadas), REGDWORD (um inteiro longo) e REGBINARY (dados binários) também são possíveis. O código a seguir do nosso aplicativo de exemplo VB6 usa a chave HKEYLOCALMACHINE Run para carregar automaticamente um aplicativo chamado TestStartup sempre que o Windows é iniciado: Clique aqui para obter um exemplo de código. Se decidimos não usar o registro e, em vez disso, criar um atalho para nosso aplicativo na pasta de inicialização do sistema, precisamos saber a localização física da pasta e precisamos decidir como queremos criar o atalho. Aqui novamente, podemos escolher entre a API Win32 ou o modelo de objeto Windows Script Host. O objeto Shell do WSH nos permite determinar o caminho físico da pasta Inicialização e criar um atalho. O objeto de atalho retornado pelo método CreateShortcut de objetos Shell permite que definamos uma propriedade necessária (o arquivo físico ao qual o atalho está vinculado) e para salvar o arquivo. O código do nosso aplicativo de exemplo VB6 que cria um link na pasta StartUp do sistema é: Clique aqui para obter um exemplo de código. Se você está usando o VB. NET e deseja configurar o sistema para carregar um aplicativo automaticamente na inicialização, você pode usar as classes de registro no namespace Microsoft. Win32. O código de nosso aplicativo VB. NET de exemplo que usa o registro para carregar TestStartup. exe automaticamente sempre que um usuário particular fizer logon é: Clique aqui para exemplo de código. Observe que, em ambos os casos, uma referência a um objeto Window é obtida a partir do objeto Document para o qual a janela serve como um contêiner. Um comentário final sobre janelas e ProgIDs. Uma vez que você pode instanciar um objeto da janela do Word usando a seqüência de caracteres totalmente qualificada Word. Window, você pode pensar que este é o identificador programático de objetos da janela do Word. No entanto, não é. ProgIDs são definidos no registo como subchaves directas de HKEYCLASSESROOT. Se você pesquisar o Registro para uma subchave denominada Word. Windows, você não vai encontrar um. A seqüência simplesmente especifica a biblioteca de tipos particular (ou seja, o Word) em que uma determinada classe (ou seja, Janela) é definida. Baixe os exemplos de código para VB6 e VB. NET. Useful Script Number 5 8211 Ajustando o Registro de Usuários Padrão Hive Michael Murgolo fez um grande post sobre as diferentes maneiras de ajustar as configurações padrão ao construir uma imagem (Configurando as configurações padrão para a implantação de imagem do Windows) e Uma das opções apresentadas era para alterações segmentadas para as pastas de perfil e de perfil do Registro de usuário padrão. Eu tive que fazer isso recentemente e montar um script que pode ser iniciado a partir da seqüência de tarefas MDT porque eu estava encontrando meu perfil de administrador personalizado wasn8217t sendo copiado sobre corretamente para o perfil de usuário padrão como parte do SysPrep. Como Michael mencionou em seu post 8211 há três processos principais8230você primeiro precisa carregar a raiz de usuário padrão (NTUser. dat) 8211 fazer as mudanças que você precisa 8211, em seguida, descarregar o ramo do usuário. Reproduzi a parte principal do meu script que faz esse processo para discussão. A primeira seção define as duas variáveis ​​que serão usadas 8211 para armazenar a chave temp (sTempHive) que iremos carregar e a segunda para armazenar o arquivo de perfil ea localização que queremos carregar (sDefaultUserHive) Para o Windows Vista, a entrada quotquotquotUSERPROFILE..DefaultNTUSER. DATquotquotquot refere-se a C: UsersDefaultntuser. dat sTempHive quotquotquotHKEYUSERSTestquotquotquot sDefaultUserHive quotquotquotUSERPROFILE..DefaultNTUSER. DATquotquotquot sSName oUtility. ScriptName definir oShell WScript. CreateObject (quotWscript. Shellquot) depois, temos que iniciar o registo de 8211 it8217s a lei oLogging. CreateEntry sSName Amp quot: Ação Iniciando 8211 Atualizando Padrão Profilequot, LogTypeInfo oLogging. CreateEntry sSName amp quot: Carregando o Usuário Padrão hivequot, LogTypeInfo A próxima seção executa reg load para carregar o arquivo NTUser. dat do diretório de usuário padrão para a chave temporária (HKEYUSERSTest) Definido na primeira seção 8211 se houver um erro o script falha e sai com um número de falha específica ou nós log sucesso. OShell. run quotreg carregar quot amp sTempHive amp quot quot amp sDefaultUserHive Se Errltgt0 Então 160 oLogging. CreateEntry sSName amp quot: Falha ao carregar o registro hive quot amp sDefaultUserHive, LogTypeError 160 ZTIProcess70 160 Sair Função Fim Se oLogging. CreateEntry sSName amp quot: Padrão User Hive Carregado para quot amp sTempHive, LogTypeInfo oLogging. CreateEntry sSName amp quot: Iniciando Registry Changes8230 quot, LogTypeInfo Agora que o hive está carregado, podemos começar a mudar stuff8230como um exemplo 8211 Eu configurei o código para mudar o papel de parede eo protetor de tela para O usuário padrão 8211 novamente com verificação de erros e códigos de falha específicos Este códigos define o papel de parede (o arquivo precisa ser onde você definir a chave para oLogging. CreateEntry sSName amp quot: Configuração Padrão Usuário Wallpaperquot, LogTypeInfo RegPath quotHKEYUSERSTestControl PanelDesktopquot oshell. RegWrite Regpath amp QuotWallPaperquot, quotC: WindowsWebWallpaperCorporateWallpaper. bmpquot, quotREGSZquot If Errltgt0 Then 160 oLogging. CreateEntry sSName amp quot: Falha ao atualizar a configuração do arquivo de papel de paredequot, LogTypeError 160 ZTIProcess60 160 Sair Função Fim Se 8230e este codificar define o protetor de tela (novamente 8211 o arquivo precisa ser onde você define a chave para oLogging. CreateEntry sSName amp quot: configuração de usuário padrão Screensaverquot, LogTypeInfo RegPath quotHKEYUSERSTestControl PanelDesktopquot oshell. RegWrite RegPath amp quotSCRNSAVE. EXEquot, quotC: WindowsCorporateScreensaver. scrquot, quotREGSZquot Se Errltgt0 em seguida, 160 oLogging. CreateEntry sSName amp quot: Failed Para atualizar as configurações do Screensaver, LogTypeError 160 ZTIProcess50 160 Exit Function End If Uma vez que todas as alterações tenham sido feitas 8211 seu tempo para descarregar o hive de sua chave de temp 8211 novamente com logging e verificação de erros oLogging. CreateEntry sSName amp quot: Hivequot, LogTypeInfo oShell. run quotreg descarregar quot amp sTempHive Se Errltgt0 Então 160 oLogging. CreateEntry sSName amp quot: Falha ao descarregar o registro de usuário padrão hivequot, LogTypeError 160 ZTIProcess40 160 Sair Função Fim Se oLogging. CreateEntry sSName amp quot: Ações completedquot, LogTypeInfo O script concluído pode ser adicionado à sua seqüência de tarefas MDT para o final 8211 para que ele seja executado antes da máquina SysPreps e reinicializa para captura. O script completo 8211 no formato MDT (para incluir o registro e acesso a classes de ZTIUtility. wsf) com um número de outras mudanças incluídas está disponível no Deployment Guys SkyDrive: Este post foi contribuído por Richard Smith um consultor sênior com Microsoft Services, Reino Unido . Eu adicionei seu script na minha implantação do MDT 2008, mas infelizmente, ele produz alguns erros. Eu encontrei isso em dev HKEYUSERS amp H80000003 Const HKEYPERFORMANCEDATA ampH80000004 que é diferente de suas configurações. Além disso, usando sua linha: ltscript languagequotVBScriptquot srcquot8230.ZTIUtility. vbsquot / gt não executou o script. O quot8230.quot tem que ser removido. Aqui está a saída de zCFG-DefaultUser. log: ltLOGO log do seqüenciador de tarefas está localizado em X: windowsTEMPSMSTSLogSMSTS. LOG. Para falhas seqüência de tarefas, consulte esta log. LOGgtlttimequot12: 22: 54.000000quot datequot08-21-2008quot componentquotzCFG-DefaultUserquot contextquotquot typequot1quot threadquotquot filequotzCFG-DefaultUserquotgt ltLOGzCFG-DefaultUser: Ações Comece 8211 Atualização Padrão ProfileLOGgtlttimequot12: 22: 54.000000quot datequot08-21-2008quot componentquotzCFG-DefaultUserquot contextquotquot typequot1quot threadquotquot filequotzCFG-DefaultUserquotgt ltLOGzCFG-DefaultUser: carregando o padrão do usuário hiveLOGgtlttimequot12: 22: 54.000000quot datequot08-21-2008quot componentquotzCFG-DefaultUserquot contextquotquot typequot1quot threadquotquot filequotzCFG-DefaultUserquotgt ltLOGzCFG-DefaultUser: Default User Hive Loaded para quotHKEYUSERSTestquotLOGgtlttimequot12: 22: 57.000000quot datequot08-21-2008quot componentquotzCFG-DefaultUserquot contextquotquot typequot1quot threadquotquot filequotzCFG-DefaultUserquotgt ltLOGzCFG-DefaultUser: Registro Começando Changes8230 LOGgtlttimequot12: 22: 58.000000quot datequot08-21-2008quot componentquotzCFG-DefaultUserquot contextquotquot typequot1quot threadquotquot filequotzCFG-DefaultUserquotgt ltLOGzCFG-DefaultUser: Usuário Configuração padrão WallpaperLOGgtlttimequot12: 22: 58.000000quot datequot08-21-2008quot componentquotzCFG-DefaultUserquot contextquotquot typequot1quot threadquotquot filequotzCFG-DefaultUserquotgt ltLOGZTI eRROR 8211 erro não tratada retornado por zCFG-DefaultUser: root inválida na chave de registo quotHKEYUSERSTestControl PanelDesktopWallpaperquot. (-2147024809 0x80070057) LOGGtlttimequot12: 22: 58.000000quot datequot08-21-2008quot componentquotzCFG-DefaultUserquot contextquotquot typequot3quot threadquotquot filequotzCFG-DefaultUserquotgt Você tem uma versão atualizada deste script, como eu não sou um programador e não saberia por onde começar. That8217s corrigir 8211 como Michael mencionado em seu post 8211 Esta técnica tem a vantagem de que todas as alterações ao usuário padrão são conhecidas e previsíveis. No entanto, esta técnica também requer que todas as alterações sejam reduzidas a itens de script, ou seja, alterações de sistema de registro ou de arquivo, nenhuma configuração manual pode ser aplicada. Eu deixei um post no fórum tecnológico relacionado. Eu tenho que lidar com um velho estilo quotworkgroupquot rede, sem ferramentas de AD para implantação, mas procurando uma maneira de automatizar a criação do escritório VPN (atualmente apenas Windows 7). Seria bom se fosse script para pedir o nome de usuário e senha para usar para criar a VPN, mas outras coisas como o nome VPN, configurações IPV4 / IPV6 e outras modificações específicas poderiam ser escritos dentro dela. Como um toque final, ele precisa criar um atalho no desktop do usuário. Para o Grand Finale, ele precisa testar a conexão e se for bem sucedido, mapeie 3 unidades de rede para a conexão VPN. Isso faria quotMy Lifequot muito mais quoteutomagicquot Obrigado Assim parece que com esta técnica, você don8217t necessidade de usar sysprep para copiar as configurações. Você pode simplesmente fazê-lo carregando, alterando as configurações, e descarregando a colméia Cool. Bem, se você usou isso em combinação com sysprep, parece dar-lhe tudo o que você precisa. Wouldnt ele John Quirk diz: Esta é uma abordagem interessante, nunca fui um fã de copiar um perfil modificado por padrão como it8217s muitas vezes reulted em resultados imprevisíveis para me8230 Eu também acho que qualquer modificação manual para a imagem config é praticamente má prática, por isso Tendem a evitar que approach8230 No momento em que eu don8217t usar a modificação de hive registro acima, mas tendem a criar um BuildSettings. msi que eu instalar como uma entrada ActiveSetup. Isso tem a vantagem de (obviamente) executar uma vez para cada usuário que faz logon e tem a capacidade de modificar os valores do Registro e onde necessário adicionar arquivos, se you8217re familiarizado com MSI (ou qualquer outra linguagem de script para esse assunto, SMSInstaller.) Isso pode Ser uma abordagem vale a pena olhar. O BuildSettings. msi I8217m usando no cliente I8217m com hoje define o seguinte (it8217s um XP ZTI job8230): Ativa o ClearType ON, altera as variáveis ​​de ambiente TEMP, muda o som, liga NumLock, cria nomes TNS ENV variável e pasta. E se a chave não existir. I8217d gostaria de fazer algumas alterações na chave SoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced, mas ele não existe no perfil de usuário padrão. E quanto a uma maneira de ajustar as configurações padrão quando você não está preparando uma imagem O uso para isso em ambientes domésticos, etc, quando vários usuários usam o mesmo PC. Eu tenho uma maneira de fazer isso no XP, mas ainda não para o Vista ou Win7. Para o XP, crio uma conta de Usuário Limitado e personalizo todo o desktop, Barra de Tarefas, Menu Iniciar, vídeo, protetor de tela, configurações do Windows Explorer, etc. Eu uso arquivos de registro (ou o faço manualmente) para configurar todas as configurações do IE (Zonas, , Configurações Avançadas, Barras de Ferramentas, Ad-Ons, Provedores de Pesquisa, etc.). Em seguida, carregue este hive do usuário do modelo para importar as configurações de energia (criadas com uma conta de administrador e modificadas para coincidir com o nome usado ao carregar o ramo para o usuário do modelo) etc. que o usuário limitado pode fazer. Eu desativar ou limpar os recentes programas / listas de documentos. Em seguida, copie este perfil modificado sobre o padrão (como em Q319974 03/02/2005 Rev2). Para corrigir os problemas de personalização / nomeação da pasta Desktop. ini / My Docs, anuncio um atalho em Startup para um arquivo em lotes que executa rundll32 mydocs, dll, PerUserInit e, em seguida, exclui o atalho para que ele seja executado somente no primeiro logon (mais fácil de gerenciar Do que runonce chave do registro). Este método aborda os problemas mencionados (2a, 2c (definição do Menu Iniciar), 2d) para substituir manualmente o perfil de defeito mencionado em blogs. technet / deploymentguys / archive / 2008/02/18 / configuring-default-user-and-computer - Settings-for-windows-image-deployment. aspx. Para este uso, 2b não importa. I8217m não tenho certeza se 2e e 2f são problemas, mas se os aplicativos aren8217t aberto com o perfil de usuário do modelo que não pode ocorrer. Eu não vi o 2e e 2f questões ainda. Ele funciona bem no XP sem problemas que I8217ve notado. Todas as sugestões para Vista ou Win7 Raiz inválida na chave do registro quotHKEYUSERSTestControl PanelDesktopWallpaperquot. (-2147024809 0x80070057 É porque o script não pode resolver sDefaultUserHive quotquotquotUSERPROFILE..DefaultNTUSER. DATquotquotquot em um ambiente WinPE Alterando-o para sDefaultUserHive C: UsersDefaultNTUSER. DATquotquotquot O Works não está arrumado. Eu preciso editar uma chave de registro com isso que usa o formato de REGBINARY e seu script não está funcionando em tudo com ele, você pode por favor post um exemplo de como que iria trabalhar com esse tipo de registro Obrigado.

No comments:

Post a Comment