View Full Version : [C] confrontare file nella cartella utente windows
tecno789
06-02-2012, 15:33
Ebbene sono tornato sotto windows perchè mi serve un semplice programmino che deve controllare che un file ci sia sotto la cartella dell'utente.
ESEMPIO :
c:/users/NOME/AppData/ecc
il problema è : come faccio a farlo girare sotto ogni utente, se il nome utente varia da computer a computer?? :muro:
ESSE-EFFE
06-02-2012, 16:26
Ebbene sono tornato sotto windows perchè mi serve un semplice programmino che deve controllare che un file ci sia sotto la cartella dell'utente.
ESEMPIO :
c:/users/NOME/AppData/ecc
il problema è : come faccio a farlo girare sotto ogni utente, se il nome utente varia da computer a computer?? :muro:
Ricavi la giusta cartella mediante una funzione Shell (tipo SHGetSpecialFolderPath) e l'apposito CSIDL (CSIDL_APPDATA in questo caso): http://msdn.microsoft.com/en-us/library/windows/desktop/bb762204(v=vs.85).aspx.
tecno789
06-02-2012, 16:38
Ricavi la giusta cartella mediante una funzione Shell (tipo SHGetSpecialFolderPath) e l'apposito CSIDL (CSIDL_APPDATA in questo caso): http://msdn.microsoft.com/en-us/library/windows/desktop/bb762204(v=vs.85).aspx.
praticamente è solo il nome dell'utente che varia, ti confesso che però ho provato ad implementarla ma non mi funziona.
ESSE-EFFE
06-02-2012, 16:42
praticamente è solo il nome dell'utente che varia, ti confesso che però ho provato ad implementarla ma non mi funziona.
Non funziona... cioè? Mostra il codice e spiega il problema...
tecno789
06-02-2012, 16:47
Non funziona... cioè? Mostra il codice e spiega il problema...
nel senso che io sono abituato a scrivere programmi in C puro lineare e semplice, non so come implementare quella determinata sintassi.
ESSE-EFFE
06-02-2012, 16:57
nel senso che io sono abituato a scrivere programmi in C puro lineare e semplice, non so come implementare quella determinata sintassi.
Sì beh, ma è solo una funzione da richiamare, come se fosse una funzione C. Solo che quello che ti serve è specifico di Windows, quindi sei costretto ad utilizzare quella funzione (o una similare) che fa parte delle API di Windows appunto. Non credo ci sia un altro sistema. Anche se volessi ricavare solo il nome dell'utente, ti serve una funzione delle API. Comunque prima hai detto che hai provato ad implementarla, quindi immaginavo che avessi scritto qualcosa...
tecno789
06-02-2012, 17:07
Sì beh, ma è solo una funzione da richiamare, come se fosse una funzione C. Solo che quello che ti serve è specifico di Windows, quindi sei costretto ad utilizzare quella funzione (o una similare) che fa parte delle API di Windows appunto. Non credo ci sia un altro sistema. Anche se volessi ricavare solo il nome dell'utente, ti serve una funzione delle API. Comunque prima hai detto che hai provato ad implementarla, quindi immaginavo che avessi scritto qualcosa...
BOOL SHGetSpecialFolderPath(
HWND hwndOwner,
__out LPTSTR lpszPath,
__in int csidl,
__in BOOL fCreate
);
def GetSpecialFolderPath(csidl_Appdata):
return shell.SHGetSpecialFolderPath(0, csidl, 0)
if((fp=fopen("c:/Users//AppData/LocalLow/","r"))== NULL){
ecc....
ESSE-EFFE
06-02-2012, 22:26
BOOL SHGetSpecialFolderPath(
HWND hwndOwner,
__out LPTSTR lpszPath,
__in int csidl,
__in BOOL fCreate
);
def GetSpecialFolderPath(csidl_Appdata):
return shell.SHGetSpecialFolderPath(0, csidl, 0)
if((fp=fopen("c:/Users//AppData/LocalLow/","r"))== NULL){
ecc....
Non serve definire la funzione, deve essere già inclusa nell'SDK che usi oppure devi eseguire un link dinamico alla Shell32.dll (che la contiene).
La parte che ho evidenziato in rosso direi che non è C e non vedo a cosa serva.
Inoltre la funzione non la usi da nessuna parte, non hai nemmeno allocato il buffer che conterrà la cartella richiesta...
tecno789
06-02-2012, 22:45
Non serve definire la funzione, deve essere già inclusa nell'SDK che usi oppure devi eseguire un link dinamico alla Shell32.dll (che la contiene).
La parte che ho evidenziato in rosso direi che non è C e non vedo a cosa serva.
Inoltre la funzione non la usi da nessuna parte, non hai nemmeno allocato il buffer che conterrà la cartella richiesta...
te l'avevo detto che non riuscivo....
perchè:
1.) non so come eseguire un link dinamico( what?? )
2.) la parte l'ho praticamente incollata dal sito che mi hai linkato
3.) non so allocare buffer per cartelle, ma so operare fino ai file.
ESSE-EFFE
06-02-2012, 22:51
te l'avevo detto che non riuscivo....
perchè:
1.) non so come eseguire un link dinamico( what?? )
2.) la parte l'ho praticamente incollata dal sito che mi hai linkato
3.) non so allocare buffer per cartelle, ma so operare fino ai file.
Sì, d'accordo, ma non hai neanche usato la funzione, come puoi sperare che vada? Poi perdonami, ma se non sai allocare un buffer forse ti conviene partire con qualcosa di più semplice, altrimenti aiutarti è piuttosto difficile...
tecno789
09-02-2012, 14:21
Sì, d'accordo, ma non hai neanche usato la funzione, come puoi sperare che vada? Poi perdonami, ma se non sai allocare un buffer forse ti conviene partire con qualcosa di più semplice, altrimenti aiutarti è piuttosto difficile...
si so allocare memoria, ma non di una cartella....perdonami...
ESSE-EFFE
09-02-2012, 14:57
si so allocare memoria, ma non di una cartella....perdonami...
Ma non devi allocare la "memoria di una cartella", mi riferivo alla memoria dove la SHGetSpecialFolderPath andrà a scrivere il percorso che devi analizzare. Un banale array di caratteri insomma, in questo caso char percorso[MAX_PATH + 1] ad esempio. E poi c'è tutto il resto che ti ho spiegato...
tecno789
09-02-2012, 17:52
Ma non devi allocare la "memoria di una cartella", mi riferivo alla memoria dove la SHGetSpecialFolderPath andrà a scrivere il percorso che devi analizzare. Un banale array di caratteri insomma, in questo caso char percorso[MAX_PATH + 1] ad esempio. E poi c'è tutto il resto che ti ho spiegato...
fino a lì ci sono, ma perdonami, avrò la testa dura, ma non ho ancora capito come implementare quella determinata funzione. Ti chiedo troppo se mi fai vedere un esempietto stupido??
grazie
ESSE-EFFE
09-02-2012, 19:21
fino a lì ci sono, ma perdonami, avrò la testa dura, ma non ho ancora capito come implementare quella determinata funzione. Ti chiedo troppo se mi fai vedere un esempietto stupido??
grazie
Esempi di uso della SHGetSpecialFolderPath sul Web ne trovi quanti ne vuoi... http://lmgtfy.com/?q=SHGetSpecialFolderPath+example
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.