Dossier "Crypté" (Appli nécessaire)

[Résolu]
Signaler
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018
-
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018
-
Bonjour à tous,

Petit casse-tête...

Je stocke des dossiers dans un répertoire central. Une application Excel 2003 permet d'ouvrir chaque Dossier qui s'y trouve, et je veux que ces Dossiers ne puissent PAS êre ouverts directement pas l'explorateur mais UNIQUEMENT par mon appli.
J'ai vu sur un site une astuce qui consiste à renommer ce répertoire central en ajoutant la syntaxe ci-dessous à son nom d'origine.
MonRep = > MonRep.{21EC2020-3AEA-1069-A2DD-08002B30309D}


J'appelle donc une sub "CryptOff" à l'ouverture de mon appli, et une "CryptOn" à sa fermeture pour cette opération.

Sub CryptOn ()
Crypt = Dir("C:\MonRep", vbDirectory)
If Crypt = "" Then
    Dir1 = "C:\MonRep"
    Dir2 = "C:\MonRep.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
    Name Dir1 As Dir2
End if
'--------
Sub CryptOff ()
Crypt = Dir("C:\MonRep.{21EC2020-3AEA-1069-A2DD-08002B30309D}"vbDirectory)
If Crypt = "" Then
    Dir1 = "C:\MonRep.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
    Dir2 = "C:\MonRep"
    Name Dir1 As Dir2
End if


Quand l'appli est fermée, c'est nickel, mon répertoire principal est bien inaccessible par l'explorateur... Mais évidemment PAS quand elle est ouverte !

Ma question : comment faire pour ouvrir un Dossier par une macro VBA de mon appli en laissant le répertoire principal "crypté" ??

Sub OpenMonDossier1 ()
'Essai infructueux de l'ouverture de MonDossier, c'est normal avec Explorer.exe!
Dim MonDossierExist
MonDossierExist = Dir("C:\MonRep.{21EC2020-3AEA-1069-A2DD-08002B30309D}\MonDossier", vbDirectory)
'le Dir "voit" bien si MonDossier existe
If MonDossierExist <> "" Then shell "explorer.exe C:\MonRep.{21EC2020-3AEA-1069-A2DD-08002B30309D}\MonDossier", vbMaximizedFocus 'ouvre MonDossier
End Sub

'*****************
Sub OpenMonDossier2 ()
'Essai infructueux d'une copie de MonDossier dans un répertoire existant "Test" par Fso Copyfolder
Dim MonDossierExist
MonDossierExist = Dir("C:\MonRep.{21EC2020-3AEA-1069-A2DD-08002B30309D}\MonDossier", vbDirectory)
If MonDossierExist <> "" Then
Set fso = CreateObject("Scripting.FileSystemObject")
fso.copyfolder "C:\MonRep.{21EC2020-3AEA-1069-A2DD-08002B30309D}\MonDossier", "C:\Test\MonDossier"
Shell "explorer.exe C:\Test\MonDossier", vbMaximizedFocus
End If
End Sub

'*****************
Sub OpenMonDossier2 ()
'Essai infructueux par Name
Name ("C:\MonRep.{21EC2020-3AEA-1069-A2DD-08002B30309D}\MonDossier") As ("C:\Test\MonDossier")
Shell "explorer.exe C:\Test\MonDossier", vbMaximizedFocus                               
End If
End Sub


Quelle bonne âme aurait une idée ?
Merci beaucoup!
Rataxes64

7 réponses

Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

Bonsoir,

On en restera là... C'est désormais obsolète.

Merci quand même.

Cordialement
Rataxes64
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Crée un utilisateur dans Active Directory ayant seulement des droits sur le répertoire protégé. Empêche à tout le monde sauf les administrateurs l'accès au dossier que tu veux protéger. Il te suffit maintenant d'utiliser l'API CreateProcessWithLogonW
---
VB.NET is good ... VB6 is better
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

Hé non, malheureusement... L'administrateur du domaine interdit ce genre de procédé... C'est bien pour ça que j'ai utilisé "l'astuce" de ce "cryptage", qui n'en est pas un, puisque " n'importe qui peut renommer le répertoire... Mais cela évite des tentations ou des fausses manipulations, car encore faut-il SAVOIR ce que "cache" ce répertoire, qui affiche l'icône et le contenu du Panneau de config... tant qu'il n'est pas renommé.


Rataxes64
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Ben alors dommage pour toi. Et pourquoi il interdit ce genre de pratiques ?
---
VB.NET is good ... VB6 is better
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

Le réseau de l'entreprise est mondial et sous contrôle CAT.
Seuls les Administrateurs Domaine ont la main sur les paramètres Accès, Lecture, Ecriture, Droits, j'en passe ...
Alors rien que pour les autorisations nécessaires à LogonUser() ou CreateProcessAsUser() : Même pas en rêve !
Merci quand même de ta réponse.

Si d'aventure une autre idée se faisait jour et pouvait passer par ce Post, elle sera accueillie bras ouverts...

Rataxes64
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Tu pourrais aussi utiliser une base MySQL pour stocker tes données. Mais bon courage pour adapter ton programme !
---
VB.NET is good ... VB6 is better
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

Bonjour à tous,
Heu... un "petit" UP ?
Merci d'avance

Rataxes64