Usuário com melhor resposta
Adicionar Programa na Inicialização

Pergunta
-
Boa noite a todos!
Estou desenvolvendo um app, é apenas um programa que complementa um instalador, nada demais, apenas uso pessoal. Porém estou com um erro, não é erro de código, suspeito ser erro de permissão(Alterações com Administrador, embora eu seja administrador haha) o erro é o seguinte
System.IO.IOException: 'Não foi possível concluir a operação porque já existe um diretório no caminho 'C:\Users\Igor Luque\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup'.'
eu fiz certinho o Import do IO.
Para que vocês entendam melhor, o aplicativo consiste em pegar um arquivo em um diretório e checar se ele existe e se ele existir movê-lo para a pasta de StartUP do windows: (C:\Users\Igor Luque\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
)
Código que fiz:
If My.Computer.FileSystem.FileExists("C:\tecnosoft\TecnoSoftLauncher.exe") Then My.Computer.FileSystem.MoveFile("C:\tecnosoft\TecnoSoftLauncher.exe", "C:\Users\Igor Luque\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup") Else MsgBox("Este Arquivo não existe") End If
Será que estou me equivocando em algo?? Não consigo achar o erro! Talvez eu não possa simplesmente jogar o arquivo para a pasta assim, o interessante é que se você arrasta-lo de qualquer lugar do seu computador ele irá normalmente! Se isso não for possível tem em VB alguma outra solução?
PS: Ja tentei usar o comando CopyFile no lugar de MoveFile.
Se puderem me ajudar ficaria imensamente grato!
Respostas
-
Olá Marcus
desculpe a demora, só pude dar continuidade agora.
O que descreveu não solucionou meu problema, mas eu dei outro jeito, eu queria apenas automatizar, mas a minha solução foi rápida e eficaz também. De qualquer forma, agradeço o tempo e os conhecimentos. Valeu
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 3 de agosto de 2018 19:42
Todas as Respostas
-
Bom dia Igor,
Se for apenas para colocar a tua aplicação para subir junto com o windows (Inicialização Automatica) eu recomendo vc fazer esse codigo:
Public Sub GravaInicializacaoAutomatica(ByVal gravar As Boolean) If gravar Then 'Cria uma nova chave sob HKEY_LOCAL_MACHINE\Software\Microsoft\windows\currentversion\run Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Microsoft\windows\currentversion\run", True) 'Inclui o sistema na inicialização automática key.SetValue("NOME_DO_SISTEMA", System.Windows.Forms.Application.ExecutablePath) Else 'Cria uma nova chave sob HKEY_LOCAL_MACHINE\Software\Microsoft\windows\currentversion\run Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Microsoft\windows\currentversion\run", True) 'Exclui o sistema da inicializaão automática key.SetValue("NOME_DO_SISTEMA", "") End If End Sub
Agora se for copiar mesmo um arquivo, acho melhor usar a classe System.IO.File, pq já tive alguns problemas com o My.Computer.FileSystem...
System.IO.File.Move("PATH_ANTIGO", "PATH_NOVO")
Vlw, espero ter ajudado.
-
Boa Tarde amigo!
Obrigado pela resposta!Eu fiz como você disse no primeiro caso, tive que fazer um import:
Imports Microsoft.Win32
Porém o meu programa que quero colocar com a inicialização também é um programa criado no visual studio, e não sei se colocar o nome dele aqui resolveria:
''Inclui o sistema na inicialização automática key.SetValue("TecnoSoftLauncher.exe", System.Windows.Forms.Application.ExecutablePath)
Então estou com o seguinte problema, não consigo fazer com que ele busque o programa.
Outro problema que também não entendi foi que eu queria que ele executasse isso no button click e desta forma que me enviaste não funciona assim!
Se não fui claro eu me explico melhor!
A segunda opção também não funcionou.Mesmo assim agradeço a reposta e a disponibilização do seu conhecimento comigo, grato!
-
Então Igor,
O caminho da sua aplicação já é trazida pelo seguinte codigo:
System.Windows.Forms.Application.ExecutablePath
Onde eu coloquei NOME_DO_SISTEMA é só um nome para ser apresentado no gerenciador de tarefas
Então faça o seguinte teste...
No evento Click do botão chame o metodo assim:
Private Sub btnGravar_Click(ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles btnGravar.Click GravaInicializacaoAutomatica(true) End Sub
Então reinicie o computador e quando subir o windows o sistema tem que rodar junto.
-
Então Igor,
O caminho da sua aplicação já é trazida pelo seguinte codigo:
System.Windows.Forms.Application.ExecutablePath
Onde eu coloquei NOME_DO_SISTEMA é só um nome para ser apresentado no gerenciador de tarefas
Então faça o seguinte teste...
No evento Click do botão chame o metodo assim:
Private Sub btnGravar_Click(ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles btnGravar.Click GravaInicializacaoAutomatica(true) End Sub
Então reinicie o computador e quando subir o windows o sistema tem que rodar junto.
Amigo, Fiz dessa forma e deu:
System.Security.SecurityException: 'Acesso ao Registro solicitado não é permitido.'
Será que eu teria que permitir algo?
E eu não sei se você entendeu o que quis dizer, eu estou fazendo uma espécie de instalador para outro aplicativo meu, então ao invés de botar esse programa na inicialização, seria outro programa. Digamos que eu queira por exemplo colocar o app do Google Chrome na inicialização com meu aplicativo. Me entende? hahah Porém no lugar do Chrome, seria outro app criado no VS.
Obrigado
-
Certo,
Entao pra iniciar um outro sistema, a partir do seu, usa a classe Process assim:
Process.Start("c:\NOME_DO_SISTEMA.exe")
- Sugerido como Resposta Marcus Paulo Augusto sexta-feira, 6 de julho de 2018 16:24
-
Olá Marcus
desculpe a demora, só pude dar continuidade agora.
O que descreveu não solucionou meu problema, mas eu dei outro jeito, eu queria apenas automatizar, mas a minha solução foi rápida e eficaz também. De qualquer forma, agradeço o tempo e os conhecimentos. Valeu
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 3 de agosto de 2018 19:42