L'outil Microsoft DISKEDIT.EXE est un outil de bas niveau pour lire et écrire directement des données brutes sur un disque. Vous devriez pouvoir charger le cluster contenant l'entrée du répertoire pour ce fichier et simplement changer le caractère '?' problématique pour quelque chose d'anodin et le réécrire sur le disque.
Je comprends que l'outil diskedit de Microsoft (et non l'outil Norton Utilities portant le même nom, qui est uniquement pour les volumes FAT) a été vu pour la dernière fois dans Windows 2000 SP4. Mais un lien vers cet outil peut être trouvé ici.
Pour localiser le bon cluster, vous pouvez télécharger une version d'essai de DiskExplorer pour NTFS.
Vous commencerez par Fichier->Disque... pour ouvrir le disque contenant ce mauvais fichier. Sélectionnez Aller à->Répertoire racine pour obtenir une vue du répertoire. Naviguez jusqu'au répertoire contenant votre mauvais fichier en utilisant les liens MFT#. Une fois arrivé là, le haut de la fenêtre indiquera quelque chose comme "MFT# x12345 DIR: 'nomdurepertoire',...blah blah blah... commençant au cluster x9302AE,... blah blah blah"
Passez maintenant à diskedit de Microsoft. Commencez par Fichier->Ouvrir... et spécifiez le Nom du volume C: (si le fichier est sur votre lecteur C:). Laissez le Nom du fichier du volume vide. Prenez ce numéro de cluster de départ et entrez-le dans diskedit sous Lire->Clusters NTFS...->Cluster de départ (entrez-le en tant que nombre hexadécimal).
Utilisez maintenant vos touches de direction pour faire défiler jusqu'au mauvais nom de fichier. Il est en unicode, vous chercherez donc quelque chose comme "O.u. .s.o.n.t. .t.o.u.s. .l.e.s. .c.o.w.b.o.y.s. .p.a.r.t.i.?...o.g.g." Placez votre curseur sur le caractère "3F" incorrect et saisissez quelque chose de sûr, comme 5F ('_'). Choisissez Écrire->Il pour le réécrire sur le disque.
Il y a un autre endroit à toucher (je ne suis pas sûr si l'un ou l'autre est nécessaire). Maintenant, de retour dans DiskExplorer, cliquez sur le Mft# du fichier défectueux. Vous obtiendrez un écran avec une sorte d'arborescence à gauche qui indique "structures". Cliquez sur "Attributs" dans l'arborescence. Il vous montrera une liste d'attributs, dont l'un sera quelque chose comme $30 ... $FILE_NAME. Ainsi, $30 contient le nom du fichier. Cliquez sur le nœud Corps sous le nœud $30 dans l'arborescence des Structures. Sélectionnez le menu Affichage->en Hexadécimal. Plusieurs lignes plus bas, vous devriez à nouveau voir le nom de fichier O.u. .s.o.n.t... etc. Sur le côté gauche de l'écran, vous verrez la colonne Secteur, qui indique le secteur du disque que vous êtes en train d'examiner.
Revenez maintenant à diskedit. Faites Lire->Secteurs... et entrez le numéro de secteur de DiskExplorer. Comme précédemment, faites défiler et remplacez le caractère "3F" par le même caractère que celui que vous avez utilisé ci-dessus. Choisissez Écrire->Il pour l'écrire sur le disque.
J'ai fait tout cela, et les outils me disent que j'ai modifié le caractère, mais l'explorateur ne le montre pas. Le répertoire doit être mis en cache quelque part. Après un redémarrage, le changement devient visible.