Avatar billede kube Nybegynder
13. november 2002 - 14:26 Der er 10 kommentarer og
1 løsning

ip gateway dns systemkald i windows

hej Eksperter,
er der mulighed for at rette/"sætte op" i ip-adresse, gateway og dns i windows vha et program. Jeg går udfra windows.h skal includeres og der skal et systemkald til men hvorledes skal det gøres  - hvis det kan?

mvh kube
Avatar billede jakobdo Ekspert
14. november 2002 - 10:56 #1
Mener du ligesom du f.eks. gør via Netværk -> Propeties -> TCP-IP! (hvor du så kan skrive eks. 192.168.1.2, dns 212.57.67.170, gateway 192.168.1.1)
Avatar billede arne_v Ekspert
14. november 2002 - 23:29 #2
Informationen ligger i Registry databasen.

Du kan godt opdatere Registry databasen fra et program.

Men jeg ville ikke gøre det, hvis jeg var dig.
Avatar billede kube Nybegynder
15. november 2002 - 17:37 #3
jakoba -> ja netop..
arne_v -> hvorfor ikke?
Avatar billede jakobdo Ekspert
15. november 2002 - 18:14 #4
Kube -> Generelt er det en dårlig ide at arbejde i Registry! Du kan meget let komme til at "Fucke" din computer op!! Og det ønsker du jo nok ikke! Men på den anden side, hvis det er eneste løsning, så kan jeg godt give dig noget kode til hvordan du arbejder med Registry...
Avatar billede arne_v Ekspert
15. november 2002 - 18:15 #5
Hvis du fumler bare en lille smule, så kan du lave mange
ulykker.

Det er ikke svært at skrive til registry:
  RegOpenKeyEx
  RegSetValueEx
  RegCloseKey

Men at få de rigtige key opdateret på den rigtige
måde.

Måske kører dit program OK på en PC, men på en anden
virker det ikke.

MS er ikke særligt gode til at dokumentere, hvordan
tingene er skruet sammen.
Avatar billede arne_v Ekspert
15. november 2002 - 18:23 #6
Jeg skrev følgende for en del år siden:

char winreg_retbuf[256];

char *winreg_get_string(char *key,char *name,HKEY root)
{
  HKEY h;
  DWORD typ,len;
  if(RegOpenKeyEx(root,key,0,KEY_QUERY_VALUE,&h)) return NULL;
  len = sizeof(winreg_retbuf) - 1;
  if(RegQueryValueEx(h,name,NULL,&typ,(BYTE *)winreg_retbuf,&len)) {
      RegCloseKey(h);
      return NULL;
  }
  if(typ!=REG_SZ) {
      RegCloseKey(h);
      return NULL;
  }
  winreg_retbuf[len] = '\0';
  RegCloseKey(h);
  return winreg_retbuf;
}

long int winreg_get_int(char *key,char *name,HKEY root)
{
  HKEY h;
  DWORD typ,len;
  long int retval;
  if(RegOpenKeyEx(root,key,0,KEY_QUERY_VALUE,&h)) return -1;
  len = sizeof(long int);;
  if(RegQueryValueEx(h,name,NULL,&typ,(BYTE *)&retval,&len)) {
      RegCloseKey(h);
      return -1;
  }
  if(typ!=REG_DWORD) {
      RegCloseKey(h);
      return -1;
  }
  RegCloseKey(h);
  return retval;
}

BOOL winreg_set_string(char *key,char *name,char *value,HKEY root)
{
  HKEY h;
  if(RegOpenKeyEx(root,key,0,KEY_QUERY_VALUE,&h)) return FALSE;
  if(RegSetValueEx(h,name,0,REG_SZ,(BYTE *)value,strlen(value))) {
      RegCloseKey(h);
      return FALSE;
  }
  RegCloseKey(h);
  return TRUE;
}

BOOL winreg_set_int(char *key, char *name,long int value,HKEY root)
{
  HKEY h;
  if(RegOpenKeyEx(root,key,0,KEY_QUERY_VALUE,&h)) return FALSE;
  if(RegSetValueEx(h,name,0,REG_DWORD,(BYTE *)&value,sizeof(long int))) {
      RegCloseKey(h);
      return FALSE;
  }
  RegCloseKey(h);
  return TRUE;
}

BOOL winreg_delete_value(char *key,char *name,HKEY root)
{
  HKEY h;
  if(RegOpenKeyEx(root,key,0,KEY_QUERY_VALUE,&h)) return FALSE;
  if(RegDeleteValue(h,name)) {
      RegCloseKey(h);
      return FALSE;
  }
  RegCloseKey(h);
  return TRUE;
}
Avatar billede kube Nybegynder
15. november 2002 - 20:40 #7
er funktionen RegOpenKey() en del af windows.h? - kan du eventuelt beskrive den lidt mere for mig?
Avatar billede arne_v Ekspert
15. november 2002 - 20:43 #8
Ja - de er defineret i windows.h.

Du kan finde en beskrivelse i VC++ docs eller på nettet.

Jeg kan ikke huske detaljerne - det er ved at være
en del år siden at jeg skrev de funktioner.
Avatar billede kube Nybegynder
15. november 2002 - 21:14 #9
jeg kigger på det, nu ved jeg da mere præcist hvad jeg skal lede efter
Avatar billede arne_v Ekspert
15. november 2002 - 21:16 #10
Og vær forsigtig med hvad du gør ved registry !

:-)
Avatar billede jakobdo Ekspert
16. november 2002 - 00:24 #11
Prøv evt også at hent Windows Platform SDK! Der står mange gode ting til programmering omkring Windows!! Tro mig! (det er en hård måde at lære på, men du lærer det fra bunden) :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester