Créer et lire un flux de données alternatifs ou alternative data

Résolu
Utilisateur anonyme - Modifié par FaonManager le 4/03/2014 à 23:33
 Utilisateur anonyme - 7 mars 2014 à 13:07
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.

4 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
5 mars 2014 à 21:19
Dans ton exemple, il utilise la commande "More" avec le spécificateur d'entrée : <
0
Utilisateur anonyme
6 mars 2014 à 23:04
C'est bien ce que j'utilise ?
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
Modifié par NHenry le 6/03/2014 à 23:14
Avec
start c:\windows\notepad.exe:Cle
Tu tentes d'exécuter un fichier texte (un peu comme faire un "start Fichier.txt").
0
Utilisateur anonyme
6 mars 2014 à 23:32
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
Utilisateur anonyme
7 mars 2014 à 13:07
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 !
0
Rejoignez-nous