View Full Version : leggere registro di sistema
fulviettino
14-04-2005, 14:28
Ciao a tutti,
avrei bisogno (da un programma in c++) di leggere da registro il percorso di access (se è installato ovviamente sul pc)...
Facendo una ricerca nel registro (di ACCESS.EXE) mi sono perso, ci sono troppi valori..vorrei sapere il percorso di registro standard, insomma quello che su qualsiasi pc è uguale...vi risulta questo percorso?
HKEY_CLASSES_ROOT
AppID
Applications
MSACCESS.EXE
command
edit: oppure in alternativa non c'è (magari nella cartella di installazione di windows) un file che contiene il percorso degli eseguibili di tutti i programmi installati?
Mi puoi spiegare a cosa ti serve ? Per lanciare l'eseguibile ? Se è per questo si può fare anche in altro modo...
fulviettino
14-04-2005, 21:53
Mi puoi spiegare a cosa ti serve ? Per lanciare l'eseguibile ? Se è per questo si può fare anche in altro modo...
In pratica dovrei lanciare un file con estensione .mdb solo che le funzioni che ho trovato (fra cui la spawnl) oltre al nome del file (che nel mio caso è fisso, prova.mdb) richiedono anche il percorso dell'eseguibile del programma che permette l'apertura di quel file...
spero di esser stato chiaro...
Usa la API di Windows ShellExecute:
HINSTANCE ShellExecute(HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
ShellExecute(NULL, "Open", "c:\\path\\tuonome.mdb", NULL, "c:\\path\\", SW_SHOW);
fulviettino
14-04-2005, 22:08
Usa la API di Windows ShellExecute:
HINSTANCE ShellExecute(HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
ShellExecute(NULL, "Open", "c:\\path\\tuonome.mdb", NULL, "c:\\path\\", SW_SHOW);
Grazie mille domani provo e ti faccio sapere
fulviettino
15-04-2005, 08:15
Perfetto :D
Thanksss
fulviettino
15-04-2005, 08:52
Uff non riesco ad interpretare gli errori che mi restituisce la ShellExecute...
If the function fails, the return value is an error value that is less than or equal to 32. The following table lists these error values:
0
ERROR_FILE_NOT_FOUND
ERROR_PATH_NOT_FOUND
ERROR_BAD_FORMAT
Come faccio ad interpretarli visto che mi vengono restituiti del numeri? Per esempio se non c'è il file la ShellExecute mi ritorna 2.. :confused:
Ho fatto qualche prova con la FormatMessage ma non ne vengo a capo :muro:
usa ERRLOOK.EXE, no? oppure vai alle dichiarazioni degli errori negli headers di Windows e cerca un errore definito col codice che ti ritorna la ShellExecute, oppure ancora fa' un po' vedere come hai fatto questa ShellExecute (posta il codice della chiamata).
if(ret == ERROR_FILE_NOT_FOUND) printf("File non trovato");
e se non è quello che fa, li prova tutti? :D
Credevo che dovesse fare una semplice gestione dell'errore...comunque:
0
ERROR_FILE_NOT_FOUND 2
ERROR_PATH_NOT_FOUND 3
ERROR_BAD_FORMAT 11
SE_ERR_ACCESSDENIED 5
SE_ERR_ASSOCINCOMPLETE 27
SE_ERR_DDEBUSY 30
SE_ERR_DDEFAIL 29
SE_ERR_DDETIMEOUT 28
SE_ERR_DLLNOTFOUND 32
SE_ERR_FNF 2
SE_ERR_NOASSOC 31
SE_ERR_OOM 8
SE_ERR_PNF 3
fulviettino
15-04-2005, 09:54
Credevo che dovesse fare una semplice gestione dell'errore...comunque:
0
ERROR_FILE_NOT_FOUND 2
ERROR_PATH_NOT_FOUND 3
ERROR_BAD_FORMAT 11
SE_ERR_ACCESSDENIED 5
SE_ERR_ASSOCINCOMPLETE 27
SE_ERR_DDEBUSY 30
SE_ERR_DDEFAIL 29
SE_ERR_DDETIMEOUT 28
SE_ERR_DLLNOTFOUND 32
SE_ERR_FNF 2
SE_ERR_NOASSOC 31
SE_ERR_OOM 8
SE_ERR_PNF 3
Perfetto, opterò per questa soluzione. Grazie a tutti :)
non ci posso credere... la pigrizia di non guardare l'error lookup!!!!! :eek:
fulviettino
15-04-2005, 22:01
non ci posso credere... la pigrizia di non guardare l'error lookup!!!!! :eek:
Non è la pigrizia ma il tempo che era mooooolto poco.
Cmq grazie per l'attenzione e per curiosità me la guarderò di sicuro!
Cmq ho chiamato la shellexecute come suggeriva cionci
ShellExecute(NULL, "Open", "c:\\path\\tuonome.mdb", NULL, "c:\\path\\", SW_SHOW)
Che tu sappia la FormatMessage non andava bene per la gestione degli errori? E la ErrLookup di cui parli fa sempre parte delle API di windoz?
:doh: l'error lookup è un programma stupidissimo dove tu inserisci il codice di errore, premi Invio e lui ti scrive la descrizione, in pratica è un'implementazione della FormatMessage; anziché farti dire tutte le costanti di tutti i possibili codici di errore ritornati dalla ShellExecute, potevi semplicemente avviare quel semplicissimo programmetto (ce l'hai per forza, sta assieme al PSDK, quindi se hai gli headers di Windows ci devi avere pure quello) e sapere subito qual'era il problema.
fulviettino
16-04-2005, 11:39
:doh: l'error lookup è un programma stupidissimo dove tu inserisci il codice di errore, premi Invio e lui ti scrive la descrizione, in pratica è un'implementazione della FormatMessage; anziché farti dire tutte le costanti di tutti i possibili codici di errore ritornati dalla ShellExecute, potevi semplicemente avviare quel semplicissimo programmetto (ce l'hai per forza, sta assieme al PSDK, quindi se hai gli headers di Windows ci devi avere pure quello) e sapere subito qual'era il problema.
Ooops che gaff paurosa :D
Grazie per i chiarimenti 71104!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.