Ir ao conteúdo
  • Cadastre-se

Criando registros com c++


renatocf
Ir à solução Resolvido por Midori,

Posts recomendados

Olá ! Peguei alguns códigos da internet e estou tentando montar um programa que se registre no RUN do windows, e quando ligar o computador, o programa inicie...

Até agora ele se copia para o diretório principal, mas não faz o registro...

Segue o código :

#include <windows.h>#include <stdio.h>#include <Winreg.h>using namespace std;int main(int argc,char*arq[]){char*homedrive=getenv("homedrive");char destino[9999];strcpy(destino,homedrive);strcat(destino,"//teste.exe");CopyFile(arq[0],destino,0);//registroHKEY hkey;long regOpenResult;const char path[] = "homedrive";regOpenResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hkey); RegSetValueEx(hkey,"testeprogram",0,REG_SZ,(BYTE*)path,strlen(path)); RegCloseKey(hkey);//codigoprintf("Ola, me iniciei !\n");system("pause");}

Valeu !!

Link para o comentário
Compartilhar em outros sites

Infelizmente, as bibliotecas utilizadas neste programa são bibliotecas exclusivas da Microsoft, as quais eu lhe garanto que não são muito fáceis de manusear e de conseguir suporte, principalmente neste fórum. Procure a respeito do assunto e estude tais bibliotecas, principalmente a <windows.h> que é uma das mais utilizadas neste ramo pra aplicativos Win32. Além disso, se ainda me permite te dar uma dica, procure sobre Qt Creator, uma IDE/biblioteca para construir aplicações com interfaces gráficas em C++, podendo rodar não só em Windows como também em Linux e Mac. Você terá mais facilidade, mais comunidades para dúvidas como essas e portabilidade (o mais importante).

Link para o comentário
Compartilhar em outros sites

  • Solução

A parte que manipula as funções de registro estão ok.

Mas como o seu programa se trata uma aplicação Windows, use WinMain como função principal ao invés de main.

E remova esse printf e system("pause")...

Por exemplo

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow){    /* funções que manipulam o registro */    MessageBox(NULL, "Ola, me iniciei!", "OLA", MB_OK);    return 0;}

Além disso, quando você criar o projeto, deve escolher um para aplicação Windows e não para console.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!