Créer et lire un flux de données alternatifs ou alternative data [Résolu]

-
Bonjour,

je voudrais pouvoir créer un fichier texte dans lequel je mets une date et le cacher dans un fichier commun à tous les PC. Je voudrais ensuite que mon programme puisse lire ce fichier texte de manière invisible, sans que l'utilisateur n'ai à faire quelque chose ou ne voit le fichier s'ouvrir.

Ce que j'ai compris dans la syntaxe pour créer un ADS d'après ces articles :

http://manumation.developpez.com/articles/windows/ads/

http://assiste.free.fr/Assiste/ADS_Alternate_Data_Stream.html

C'est que la syntaxe est la suivante :

echo "MON TEXTE OU REPERTOIRE FICHIER A CACHER" > c:\windows\notepad.exe(Ou autre application):Clé
(qui servira à ouvrir le flux)


Je pense avoir la bonne syntaxe ? Si quelqu'un peut me confirmer.

Je dois donc utiliser le code suivant :

Shell("cmd.exe /C echo " & MON TEXTE & " > C:\windows\notepad.exe:Cle", AppWinStyle.Hide)

Le problème c'est que lorsque je veux ouvrir mon fichier texte en manuel, le fichier est introuvable.
start c:\windows\notepad.exe:Cle


Merci pour votre aide.
Afficher la suite 

4 réponses

Messages postés
14456
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
24 mai 2019
130
0
Merci
Dans ton exemple, il utilise la commande "More" avec le spécificateur d'entrée : <
0
Merci
C'est bien ce que j'utilise ?
NHenry
Messages postés
14456
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
24 mai 2019
130 -
Avec
start c:\windows\notepad.exe:Cle
Tu tentes d'exécuter un fichier texte (un peu comme faire un "start Fichier.txt").
0
Merci
J'ai utilisé CodeFluent Runtime Client (http://www.softfluent.com/products/codefluent-runtime-client) et sa classe NtfsAlternateStream (http://blog.codefluententities.com/2013/03/14/manipulating-ntfs-alternate-data-streams-in-c-with-the-codefluent-runtime-client/) et c'est super pratique ! J'ai réussi à créer mon ADS très facilement, le seul problème c'est que je voudrais mettre mon ADS sur un fichier dont tous les PC disposent, je voudrais le mettre sur notepad ou regedit mais lorsque je tente l'écriture, j'obtiens l'erreur :

"Une exception non gérée du type 'System.UnauthorizedAccessException' s'est produite dans mscorlib.dll

Informations supplémentaires : Accès refusé. (Exception de HRESULT : 0x80070005 (E_ACCESSDENIED))"

Une idée de où je pourrais mettre mon ADS en ayant accès au fichier ?

       'Create a stream supporting ADS syntax
        Dim stream As FileStream = NtfsAlternateStream.Open("C:\Users\Clément\Desktop\Fichier.txt:hide", FileAccess.Write, FileMode.OpenOrCreate, FileShare.None)
        stream.Close()
 
        'Writing in to an ADS
        NtfsAlternateStream.WriteAllText("C:\Users\Clément\Desktop\Fichier.txt:hide", CStr(FirstRunDate))
 
        'Reading data from an ADS
        Dim text As String = NtfsAlternateStream.ReadAllText("C:\Users\Clément\Desktop\Fichier.txt:hide")
 
        'Enumerating all the ADS in test.txt
        Dim adsStreams As IEnumerable = NtfsAlternateStream.EnumerateStreams("C:\Users\Clément\Desktop\Fichier.txt")
        For Each ads As NtfsAlternateStream In adsStreams
            MsgBox(text)
        Next
 
        'This will not delete the test.txt file
        NtfsAlternateStream.Delete("C:\Users\Clément\Desktop\Fichier.txt:hide")


Merci.
0
Merci
J'ai essayé sur C:\Users\Public\ntuser.dat et cela fonctionne !
Fonctionne aussi sur le dossier AppData :
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)


Merci à tous !