.NET -
Iniciando sua aplicação junto com o Windows
![]() |
No artigo de hoje vou apresentar uma dica que mostra como iniciar sua aplicação C# ou VB .NET junto com o Windows. |
Recordando a teoria
O registro do Windows é um base de dados hierárquica que armazena os ajustes de configuração e opções dos sistema operacional Windows.
Assim, o registro do Windows pode ser visto como um banco de dados central que armazena as definições das configurações e outras informações exigida pelas aplicações.
Ele surgiu para unir em um único local todos os arquivos INI, utilizados para armazenar as configurações de cada programa como acontecia no Windows 3.11 e anteriores. Como ficavam espalhados pelos diretórios no disco, eram de difícil administração.
As duas únicas tarefas que você consegue fazer com o registro é ler e escrever nele.
Você já alguma vez abriu o registro ?
Se não o fez , basta clicar com botão direito sobre o ícone do Windows no canto inferior esquerdo da barra de tarefas e na janela Executar digitar regedit e clicar em OK; (Estou usando o Windows 8.1)
O botão OK abre o editor do registro. Na figura abaixo temos a hierarquia do registro. Ela possui cinco chaves principais sob o nó Meu Computador.
Para poder trabalhar como registro a .NET Framework fornece duas classes - Registy e RegistryKey.
Estas classes estão definidas no namespace - Microsoft.Win32; de forma que para que possamos usá-las devemos fazer referência a este namespace.
A classe Registry
Podemos definir as chaves do registro na seguinte ordem:
CurrentUser
- Armazena informação sobre as preferências do usuário.
LocalMachine - Armazena a
configuração da informação para a máquina local
ClassesRoot -
Armazena informação sobre tipos e classes e suas propriedades.
Users
- Armazena informação sobre a configuração padrão do usuário.
PerformanceData - Armazena informação de desempenho para os
componentes de software.
CurrentConfig - Armazena informação
sobre hardware.
DynData
- Armazena dados dinâmicos.
A classe Registry contém membros que fornecem acesso as chaves do registro. Os membros correspondentes a cada um dos tipos das chaves acima citadas estão descritos abaixo:
ClassesRoot | Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_CLASSES_ROOT |
CurrentConfig | Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_CURRENT_CONFIG |
CurrentUser | Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_CURRENT_USER |
DynData | Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_DYN_DATA |
LocalMachine | Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_LOCAL_MACHINE. |
PerformanceData | Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_PERFORMANCE_DATA |
Users | Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_USERS |
A classe RegistryKey contém membros para incluir , remover , substituir e ler dados do registro. Os métodos e propriedades mais comuns desta classe estão indicados abaixo:
Propriedades | Descrição |
Name | Representa o nome da chave |
SubKeyCount | Representa o numero de subkeys a nivel da base para a chave atual |
ValueCount | Representa o numero de valores na chave key. |
Método |
Descrição |
Close |
Fecha a chave. |
CreateSubKey |
Cria uma nova subkey se ela não existir, de outro modo abre a subkey existente. |
DeleteSubKey |
Exclui a subkey definida |
DeleteSubKeyTree |
Exclui a subkey e qualquer filha. |
DeleteValue |
Exclui o valor definido de uma Chave. |
GetSubKeyNames |
Retorna um vetor de strings que contém todos os nomes das subkeys. |
GetValue |
Retorna um valor especifico. |
GetValueNames |
Retorna um vetor de strings que contém todos os valores dos nomes associados com esta chave. |
OpenSubKey |
Abra uma subkey. |
SetValue |
Atribui o valor definido. |
Depois dessa teoria vamos ao que interessa: Usar o registro do Windows para iniciar sua aplicação junto com o Windows.
Como fazer isso ?
Simples, usar a classe Registry do namespace System.Win32 e adicionar sua aplicação no registro do Windows.
Vamos incluir uma entrada em HKEY_CURRENT_USER que permitirá que o programa seja iniciado pelo usuário que esta atualmente logado no Windows quando o código for executado.
Se você quiser que o programa seja iniciado junto com o Windows para todos os usuários terá que usar a chave HKEY_LOCAL_MACHINE mas para fazer isso você precisa ter direitos de administrador do sistema.
Recursos usados :
Iniciando sua aplicação com o Windows
Abra o VS 2013 Express for windows desktop e clique em New Project;
A seguir selecione a linguagem Visual Basic ou Visual C# e crie uma aplicação de qualquer tipo.
Eu vou criar uma aplicação usando o template Windows Forms Application;
Informe um nome pertinente como Iniciar_App_Com_Windows;
No projeto criado inclua dois botões de comando no formulário do projeto:
O leiaute pode ser algo parecido com a figura abaixo. Se estiver mais inspirado fique à vontade...
Vou criar dois métodos no formulário, mas você pode melhorar criando uma classe com métodos estáticos.
O primeiro será para incluir a aplicação no registro do Windows:
public void AdicionarAplicacaoAoIniciar()
{
try
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.SetValue(caminho, "\"" + Application.ExecutablePath + "\"");
}
}
catch
{
throw;
}
}
|
Public Sub AdicionarAplicacaoAoIniciar()
Try
Using key As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
key.SetValue(caminho, """" + Application.ExecutablePath + """")
End Using
Catch
Throw
End Try
End Sub
|
O segundo será para remover a aplicação do Registro:
public void RemoverAplicacaoAoIniciar()
{
try
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.DeleteValue(caminho, false);
}
}
catch
{
throw;
}
}
|
Public Sub RemoverAplicacaoAoIniciar()
Try
Using key As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
key.DeleteValue(caminho, False)
End Using
Catch
Throw
End Try
End Sub
|
A variável caminho representa o caminho da aplicação que você deseja que seja executada quando o Windows iniciar.
Por exemplo:
string caminho = @"C:\_vbn\Consulta_Cep\Consulta_Cep\bin\Debug\Consulta_Cep.exe";
Agora em cada botão de comando basta chamar os métodos acima:
private void btnIniciarApp_Click(object sender, EventArgs e)
{
try
{
AdicionarAplicacaoAoIniciar();
}
catch(Exception ex)
{
MessageBox.Show("Erro " + ex.Message,"Erro",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
private void btnRemoverAppRegistro_Click(object sender, EventArgs e)
{
try
{
RemoverAplicacaoAoIniciar();
}
catch(Exception ex)
{
MessageBox.Show("Erro " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
|
Private Sub btnIniciarApp_Click(sender As Object, e As EventArgs)
Try
AdicionarAplicacaoAoIniciar()
Catch ex As Exception
MessageBox.Show("Erro " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End Try
End Sub
Private Sub btnRemoverAppRegistro_Click(sender As Object, e As EventArgs)
Try
RemoverAplicacaoAoIniciar()
Catch ex As Exception
MessageBox.Show("Erro " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End Try
End Sub
|
Este código foi testado no meu Windows 8.1 e funcionou, mas, eu não garanto que vá funcionar em todos os ambientes devido a particularidades de cada ambiente de usuário.
Pegue o
projeto completo aqui :
Consulta_APP_Ao_Iniciar.zip
Eu sou a videira verdadeira, e meu Pai é o
lavrador.
Toda a vara em mim, que não dá fruto, a tira; e limpa toda aquela que dá fruto,
para que dê mais fruto.
João 15:1,2
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: