Mémoire partagée les autorisations d'accès sur Windows

J'ai développé une application windows qui utilise la mémoire partagée------les fichiers mappés en mémoire pour la communication interprocessus. J'ai un service windows qui fait du traitement et périodiquement écrit des données dans le fichier mappé en mémoire. J'ai séparé application windows qui lit le fichier mappé en mémoire et affiche les informations. L'application fonctionne comme prévu sur Windows XP, XP Pro et Server 2003, mais PAS sur Vista.

Je peux voir que les données écrites sur le fichier mappé en mémoire se passe correctement par le service windows parce que je peux ouvrir le fichier avec un éditeur de texte et de voir les messages, mais le "consommateur" de l'application ne peut pas lire le fichier. Une chose intéressante à noter ici, c'est que si je ferme l'application du consommateur et de le redémarrer, il consomme les messages qui ont déjà été écrites sur le fichier mappé en mémoire.

Aussi, une autre chose étrange est que je reçois le même problème lorsque je me connecte à l'hôte windows à l'aide de Bureau à Distance et appeler/utilisation de l'application du consommateur via le bureau à distance. Cependant, si j'invoque le Bureau à Distance et de se connecter à l'hôte cible de la session de la console avec la commande suivante: mstsc -v:servername /F -console, tout fonctionne parfaitement.

C'est pourquoi je pense que le problème est lié à des autorisations. Quelqu'un peut-il commenter?

EDIT:

L'ACL que j'utilise pour créer le fichier mappé en mémoire et les Mutex les objets synchroniser l'accès est comme suit:

TCHAR * szSD = TEXT("D:")
               TEXT("(A;;RPWPCCDCLCSWRCWDWOGAFA;;;S-1-1-0)")
               TEXT("(A;;GA;;;BG)")
               TEXT("(A;;GA;;;AN)")
               TEXT("(A;;GA;;;AU)")
               TEXT("(A;;GA;;;LS)")
               TEXT("(A;;GA;;;RD)")
               TEXT("(A;;GA;;;WD)")
               TEXT("(A;;GA;;;BA)"); 

Je pense que cela peut être une partie de la question.

OriginalL'auteur James Whetstone | 2008-10-06