CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 2018
-
25 avril 2010 à 15:10
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 2018
-
1 juil. 2013 à 22:45
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.
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
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 25 avril 2010 à 21:41
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
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 20181 26 avril 2010 à 01:08
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é.
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 20181 26 avril 2010 à 19:43
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...