Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372

    C++/Api RegQueryValueEx() Conoscere nome computer

    premetto che ho i permessi ed uso RegQueryValueEx ma non ritorna il nome pc

    HKEY hReg;
    if(RegConnectRegistry(NULL,HKEY_LOCAL_MACHINE,&hRe g)==ERROR_SUCCESS) {
    char lpValue[200]; DWORD tyValue=REG_SZ; DWORD cbValue;
    if(RegOpenKeyEx(hReg,"System\\CurrentControlSet\\C ontrol\\ComputerName",0,KEY_QUERY_VALUE,phkResult) ==ERROR_SUCCESS) {
    if(RegQueryValueEx(hReg,"System\\CurrentControlSet \\Control\\ComputerName\\ComputerName",0,&tyValue, (LPBYTE)&lpValue,&cbValue)==ERROR_SUCCESS) {
    MessageBox(0,(char*)lpValue,"Avviso",MB_OK);
    }
    }
    RegCloseKey(hReg);
    anche passando solo "ComputerName" niente

    ho provato con FormatMessage(..) ma ritorna sempre "operazione terminata con successo"

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non e' piu' semplice ottenerlo cosi'

    printf("%s\n", getenv("COMPUTERNAME"));


    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372
    peccato che in win98 (e purtroppo ci sono) non funzica

    ed inoltre come ottenere l'indirizzo del pc (server) dal quale copiare un file nel client, visto che con le var d'ambiente non è possibile ??

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da stefanoB
    peccato che in win98 (e purtroppo ci sono) non funzica
    Queste informazioni dovresti darle PRIMA ...

    Comunque, questo dovrebbe funzionare

    codice:
    char sysName[MAX_COMPUTERNAME_LENGTH + 1];  
    DWORD dwBufferSize = MAX_COMPUTERNAME_LENGTH + 1;  
       
    GetComputerName(sysName, &dwBufferSize);
    
    printf("%s\n", sysName);
    ed inoltre come ottenere l'indirizzo del pc (server) dal quale copiare un file nel client
    Questa non l'ho capita ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372
    mi scuso se non ho fornito tutte le info ... stavo cercando una migliore soluzione per effettuare una installazione/start up di una appllicazione cliente/server, e probabilmente mi è sfuggito qualcosa, allora questo è il progetto:

    - l'installazione dei file per il server, set del registro la effettuo con InnoSetup (anch'esso usa la api RegQueryValueEx(...) solo che qui funziona, in questo modo ho risolto:
    1) il problema di questa discussione di funzionamento della RegQueryValueEx da C++
    2) prendere il nome pc, nome utente che sta installando con GetComputerNameString(), e
    GetUserNameString() funzioni di Inno oppure utilizzare getenv()..
    3) e non da poco tutto il lavoro di installazione ...


    ed inoltre come ottenere l'indirizzo del pc (server) dal quale copiare un file nel client ...
    l'indirizzo del pc server (ip) forse posso farne a meno se conosco il nome pc e lo identifico come tale, questo perchè dal pc server vorrei copiare nel pc client (quando si effettua l'installazione) il file DSN (data source name) necessario per la connessione al db (Sybase) evitandomi di creare nel registro le DSN (considerando che esiste un db per ogni anno ad ogni login dovrei fare un sacco di lavoro ...)

    ed a tal proposito c'è una discussione aperta in cui ho un "mezzo" problema con SQLDriverConnect(...)

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372
    se può interessare ho fatto alcune modifiche ed ho risolto:

    if(RegOpenKeyEx(hReg,"System\\CurrentControlSet\\C ontrol\\ComputerName\\ComputerName",0,KEY_QUERY_VA LUE,&hReg)==ERROR_SUCCESS)
    char *lpValue; DWORD tyValue=REG_SZ; DWORD cbValue;
    oppure
    TCHAR lpValue[100]; DWORD tyValue=REG_SZ; DWORD cbValue=100;
    if(RegQueryValueEx(hReg,"ComputerName",0,&tyValue, (LPBYTE)lpValue,&cbValue)==ERROR_SUCCESS)
    MessageBox(0,(char*)lpValue,"RegQueryValueEx",MB_O K);
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.