Ferramentas de Utilizador

Ferramentas de Site


dev_net:vb.net:programa_startup_registo

O registo do Windows – Colocar um programa no arranque do Windows

Entender o Registo do Windows

O Registo do Windows é um enorme repositório de dados, onde estão definidas todas as configurações necessárias para a execução do sistema operativo e aplicativos, bem como as informações necessárias para o correcto funcionamento do Hardware1). O registo caracteriza-se por ser uma combinação de key –> Value, ou seja, na língua de Camões, Chave (nome)–> Valor.

Cada Key, pode ter n SubKeys, e estas mesmas, conterem n SubKeys , um pouco à semelhança que acontece com o sistema de pastas e sub pastas. Os valores das chaves podem ser de vários tipos, e actuam a vários níveis, ou seja, obedecem a uma determinada hierarquia e têm funções específicas.2)

Adicionar um Programa ao Início do Windows

Como já foi referido, o objectivo do registo é guardar valores com determinada estrutura, que é reconhecida e interpretada pelo sistema operativo. Embora seja desaconselhado (deverá usar preferencialmente as settings), em ultima instância até poderemos guardar valores necessários para a nossa aplicação funcionar.

Mas voltemos ao tema do artigo: adicionar um programa ao Arranque do Windows. Estes programas poderão ser “colocados” em duas chaves distintas:

  • HKEY_Current_User – Afecta o arranque na sessão actual
  • HKEY_Local_Machine - Afecta o arranque em todas as sessões.

Como precaução, criei duas funções. Uma que adiciona, e outra que elimina o registo. Para o exemplo, esse registo vai ser adicionado apenas na minha sessão.

Não esquecer de fazer o imports no início do código:
 Imports Microsoft.Win32 

Função para Adicionar Chave

     ''' <summary>
       ''' <summary>
    ''' Adiciona um par Key-Value ao registo
    ''' </summary>
    ''' <param name="name">Nome da Key</param>
    ''' <param name="path">Valor da Key</param>
    ''' <remarks></remarks>
    Public Sub AddCurrentKey(ByVal name As String, ByVal path As String)
        Try
            Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("SoftwareMicrosoftWindowsCurrentVersionRun", True)
            key.SetValue(name, path)
        Catch ex As Exception
            MsgBox("Ocorreu um erro: " & ex.Message)
        End Try
    End Sub

Função para Eliminar Chave

  ''' <summary>
    ''' Remove uma Key do registo
    ''' </summary>
    ''' <param name="name">Nome da Key</param>
    ''' <remarks></remarks>
    Public Sub RemoveCurrentKey(ByVal name As String)
        Try
            Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("SoftwareMicrosoftWindowsCurrentVersionRun", True)
            key.DeleteValue(name, False)
        Catch ex As Exception
            MsgBox("Ocorreu um erro: " & ex.Message)
        End Try
    End Sub

Utilização Prática

        If ynRegistar Then
            AddCurrentKey("nome do meu programa", "c:Programaso_meu_programaexecutavel.exe")
        Else
            RemoveCurrentKey("nome do meu programa")
        End If

Criei uma variável (ynRegistar), para o caso de o adicionar/remover estar dependente de determinada avaliação, e simultaneamente apresentar um exemplo de ambas as opções.

Atenção que só será possível efectuar alterações ao registo se tiver permissões de Administrador.

Exemplo Adaptado de http://www.dreamincode.net/forums/showtopic94010.htm

2)
Para saber mais sobre o registo do Windows (em Inglês): http://en.wikipedia.org/wiki/Windows_Registry
dev_net/vb.net/programa_startup_registo.txt · Esta página foi modificada pela última vez em: 2018/05/14 21:37 (Edição externa)