Sauvegarde partagée [Résolu]

Signaler
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour,

J'ai créé un programme qui se lance au démarrage d'une session et qui lit un fichier de configuration.
Il le modifie également.

Le problème c'est que quand la session est limité impossible d'avoir l'accès en écriture, mais la lecture est possible.
L'attribut lecture seule n'est pas enclenchée.
J'utilise ofstream du C++.

Je le met dans All User\Application Data (réception du dossier via une fonction API qui fonctionne sous XP).

Si la configuration est créé la première fois est créé sur un compte admin, impossible pour les comptes limités de le modifier, si c'est créé par un compte limité, aucun pb ni pour lui ni pour un compte admin mais pas pour un autre compte limité qui lui générera une erreur.

Si vous avez une idée pour enregistrer une configuration modifiable par tous les utilisateurs du logiciels sans passer par le registre et en évitant de le mettre dans un répertoire trop fréquenté comme "Mes documents partargés".

Merci d'avance et bonne prog,
@++

Le créateur du site http://victorlogiciels.com

13 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
int __stdcall CreerDossierTousUsers(char *szfolder)
{
  SECURITY_ATTRIBUTES sa;
  TCHAR szSD[] = TEXT("D:")
                 TEXT("(A;OICI;GA;;;WD)"); // Allow full control to everyone for that directory
  sa.nLength = sizeof(SECURITY_ATTRIBUTES);
  sa.bInheritHandle = FALSE;
  if(!ConvertStringSecurityDescriptorToSecurityDescriptor(szSD, SDDL_REVISION_1, &(sa.lpSecurityDescriptor), 0)) return 0;
  return CreateDirectory(szfolder, &sa);
}

Fichiers créés dans ce dossier hériteront des droits du dossier.

ciao...
BruNews, MVP VC++
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour,

C'est bon je l'ai trouvé à l'adresse : http://www.koders.com/c/fid9045DE7B2531E2DCA4A356695E5C7F3DAB013326.aspx

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
Messages postés
177
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
16 janvier 2009
1
Bonjour,
je n'ai pas la réponse pour le dossier Application Data...
Mais tu peux très bien le mettre dans le répertoire où est installé ton  appli comme Program Files\My apply
Et tout le monde pourra y accéder.
Cdlt,
Pierrick
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour,

Non c'est justement là le problème.
D'abord Program Files est inacessible en écriture à un compte limité et en plus même dans le répertoire de développement impossible d'écrire en compte limité si le fichier a été créé sur un compte admin.

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour,

Ok merci je teste !

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour,

Voilà les erreurs générées :
In file included from main.cpp:23:
outils.hpp: In function `int CreerDossierTousUsers(char*)':
outils.hpp:12: error: `SDDL_REVISION_1' undeclared (first use this function)
outils.hpp:12: error: (Each undeclared identifier is reported only once for each function it appears in.)
outils.hpp:13: error: `ConvertStringSecurityDescriptorToSecurityDescriptor' undeclared (first use this function)

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour,

J'ai été voir MSDN :
Header : Declared in Sddl.h.

Je n'ai pas ce fichier par contre la librairie qui est associé à cette fonction est présente.
Donc en fait il me faut juste le header.

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Si tu as regardé MSDN, suffit d'un copier coller:

BOOL __stdcall ConvertStringSecurityDescriptorToSecurityDescriptor(
  LPCTSTR StringSecurityDescriptor,
  DWORD StringSDRevision,
  PSECURITY_DESCRIPTOR* SecurityDescriptor,
  PULONG SecurityDescriptorSize
);

ciao...
BruNews, MVP VC++
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour,

Désolé sous Dev-C++ le header n'existe pas.
Si tu regarde le lien tu vera qu'il y a plus que sur MSDN.
Maintenant je teste l'efficacité et je te donnes des nouvelles.

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour,

ça m'a l'air de marcher cette fonction.

Merci bien BruNews.

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
T'avais pas besoin de tout le header, une fois inclus la lib, tu mets la déclaration de la fonction en haut du module qui l'emploie et tout va bon.

ciao...
BruNews, MVP VC++
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour,

Sauf que SDDL_REVISION_1 n'est pas présent.
Au moins je suis tranquille.

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
ah oui, exact.

ciao...
BruNews, MVP VC++