Comment définir étendue des propriétés de fichier?
J'ai besoin de régler la valeur du champ Société pour certains Word/PDF documents. Je parle de l'étendue des propriétés de fichier (résumé/auteur/titre, etc.) vous voir dans les Propriétés du Fichier.
Je sais comment obtenir eux (à l'aide de shell32.dll
bibliothèque de classe). Je suppose que je pourrais aussi ensemble avec la même bibliothèque de classe, mais il semble que l'écriture de propriétés étendues est un peu plus difficile et shell32.dll
ne permet pas que.
J'ai trouvé quelque chose à propos de taglib-sharp
, qui semble avoir une option pour définir les propriétés étendues, mais je ne comprends pas vraiment comment cela fonctionne.
- Je soupçonne que pour de simples fichiers qu'ils sont dans un autre flux NTFS, par exemple, ce one mais pour .docs ils avaient effectivement être une propriété de la doc fichier lui-même. Je pense que taglib-sharp est juste pour les fichiers mp3. Il y a probablement un objet COM qui est utilisé par l'Explorateur pour analyser ces que vous pouvez automatiser?
- Je cheked hors tablib et c'est pour mp3 seulement. Peut-être me donner un indice au sujet de l'objet COm, parce que je n'ai pas vraiment comprendre. Je suis un débutant et semblent comme je suis à essayer d'obtenir quelque chose des thats-dessus de ma tête.
- Merci pour le partage de votre réponse. Je travaillais sur des tâches similaires et n'a trouvé que l'utilisation de Shell32.dll je peux obtenir des propriétés, mais n'a pas été en mesure de les définir. Votre réponse m'a vraiment aidé.
Vous devez vous connecter pour publier un commentaire.
Solution 2016
Ajouter suivant les packages NuGet à votre projet:
Microsoft.WindowsAPICodePack-Shell
par MicrosoftMicrosoft.WindowsAPICodePack-Core
par MicrosoftLire et Écrire des Propriétés
Important:
Le fichier doit être valide, créé par l'attribution spécifique du logiciel. Chaque type de fichier a étendu les propriétés de fichier et tous ne sont pas accessible en écriture.
Si vous cliquez droit sur un fichier sur le bureau et ne peut pas modifier une propriété, vous ne serez pas en mesure de le modifier dans le code aussi.
Exemple:
modifier son
Author
ouTitle
propriété.c'. Maintenant, vous pouvez.
Donc, assurez-vous simplement d'utiliser certains
try
catch
Autre Sujet:
MSDN: la mise en Œuvre de Biens de Gestionnaires d'
WindowsAPICodePack
est tout simplement génial.ShellPropertyWriter
semble ne pas enregistrer les modifications parfois. La modification de la valeur directement comme indiqué dans cette réponse semble mieux fonctionner pour moi.Ok, voici la réponse à ma propre question, puisque je n'étais pas vraiment en mesure de trouver ma réponse dans ce forum, il pourrait être utile pour les autres.
La Solution est d'utiliser dsofile.dll et OleDocumentPropertiesClass.
Voici MS article sur dsofile.dll - Lien
Dans ce lien, vous pouvez télécharger dsofile.dll avec d'autres fichiers. Mais plus probablement, comme je l'ai fait, vous ferez face à certains des problèmes bizarres qui sont difficiles à trouver une solution pour.
1) Après l'installation dsofile.dll, vous devrez vous inscrire à la classe: opinion cmd et accédez à c:\dsofile de au répertoire où vous avez extrait votre téléchargé dsofile.dll. Après, l'écriture de la ligne de regsvr32 dsofile.dll. Vous devriez obtenir une messagebox disant que l'enregistrement a été couronné de succès. Si non, la plupart probablement vous n'avez pas les droits d'admin. Vous allez avoir besoin des droits d'administrateur dans le cas où vous voulez que cela fonctionne.
2) Après avoir essayé d'utiliser cette classe dans votre programme, si vous êtes en utilisant .NET 4.0, il est possible que vous ne voyez erreur en disant quelque chose comme "de la classe ne peut pas être incorporée ..."
Eh bien, pour cela, clic droit sur dsofile dans la liste des références, propriétés -> intégrer l'interopérabilité des fichiers -> FALSE.
3) Comment l'utiliser:
L'Explorateur Windows (à l'aide de
shell32.dll
) est capable d'afficher les propriétés étendues, car il comprend beaucoup de différents formats de fichier et peut analyser ces. Cependant, pour définir une propriété étendue vous avez probablement besoin d'un format de fichier spécifique de la bibliothèque. E. g. pour définir l'auteur d'un fichier MP3 fichier est très différente par rapport à la configuration de l'auteur d'un document Office. (En fait, l'Explorateur Windows vous permet de définir des propriétés étendues sur des documents Office.)La taglib-sharp ne fonctionne qu'avec des fichiers multimédias et est probablement pas en mesure de définir les propriétés étendues de tout autre type de fichier.
Ce que vous avez besoin est d'une bibliothèque ou d'un outil, vous pouvez automatiser de modifier des fichiers PDF. Vous pouvez essayer de google pdf sdk. Si vous avez aussi besoin de travailler avec des fichiers Word, vous pouvez utiliser COM automation pour automatiser Word. Selon le format de fichier Word, vous pouvez également être en mesure de travailler directement avec les fichiers sans avoir Word est installé (XML est beaucoup plus facile que l'ancien binaire "flux" de format).
Merci @andrée, j'ai beaucoup de recherche pour les réponses..
(Pour moi, il a travaillé seulement avec .les fichiers doc).
Ajouté
Juste pour vérifier si le fichier Ole..
Et Visual Studio en tant qu'Administrateur
De définir des propriétés, vous pourriez utiliser Windows Système De La Propriété. Il fournit une interface pour accéder à la Propriété "Magasin Cache" (IPropertyStore) où vous pouvez lire/définir toutes les propriétés du fichier (quel que soit le format), et ajouter vos propres propriétés (la bibliothèque c propkey.h a une liste complète de toutes les propriétés disponibles; vous pouvez également trouver de l'aide prop.exe). C'est essentiellement la création d'un Gestionnaire de la Propriété qui doit être plus tard enregistrée pour votre extension de fichier. Il est officiellement pris en charge dans le code managé, de sorte que vous pourriez voulez écrire votre propre papier d'emballage ou l'utilisation de c++ (puisque c'est un c# tagged question).
Si vous êtes venu demander des propriétés du support, découvrez les métadonnées des gestionnaires, qui sont essentiellement des codecs extraire vos propriétés du fichier et également appelé par l'explorateur par défaut si vous les enregistrez correctement.