2011-02-18 2 views
2

J'essaie de porter une application écrite en C de Linux vers Windows.Dossier personnel de l'utilisateur Windows en C (MinGW)

Pour l'instant j'ai fini de réparer les parties 'dures' comme missing posix features et autres.

L'application compile, lie et travaille sur Windows maintenant (à l'exception de la substance fork() qui sera remplacée par le code de service Windows plus tard).

Le seul problème que j'ai maintenant est que dans le shell MSYS tout cela fonctionne (ceci me fait des chemins unix).

En dehors du shell MSYS, cela ne fonctionnera pas car ~ n'est pas disponible. Je cherche la meilleure façon de définir l'utilisateur Windows à la maison dans mes trucs #ifdef. J'ai lu environ %USERPROFILE% quelque part mais cela ne semble pas work.

+0

'% USERPROFILE%' devrait être correct, au moins sur Windows 7. Il peut varier sur les autres systèmes d'exploitation. –

+0

semble étrange car la variable d'environnement USERPROFILE doit contenir le dossier de départ. –

+2

'% USERPROFILE%' fonctionne correctement, mais à partir d'un programme, vous devez utiliser 'SHGetFolderLocation' ou l'un de ses amis. Si vous ne pouvez pas obtenir '% USERPROFILE%', alors vous vous trompez. –

Répondre

2

Utilisez SHGetKnownFolderPath (Vista +) ou SHGetFolderPath en fonction de votre version de Windows.

+0

J'essaierai ceux-ci. Espérons que je n'ai pas besoin de MSVC pour cela. . –

+2

Pourquoi auriez-vous besoin de MSVC? –

+0

En regardant le MSDN Je n'ai pas vu la partie 'Quels en-têtes' en premier donc c'était un peu confus, ce qui m'a amené à penser que ça ne marcherait pas vraiment avec MinGW. –

2

Je pense que vous devriez utiliser l'API SHGetFolderLocation: http://msdn.microsoft.com/en-us/library/bb762180%28VS.85%29.aspx bien ne pas enought, vous devriez même récupérer l'ID du dossier utilisateur, mais en commençant à l'emplacement de doc ci-dessus, vous devriez avoir tout ce que vous neeed. Cela devrait fonctionner sur n'importe quelle version de Windows.

+0

J'essaierai ça, merci. Je te tiendrai au courant! –

Questions connexes