Erreur « Un élément avec la même clé a déjà été ajouté » lorsque vous ouvrez une liste dans VAMT 2.0 sur un ordinateur Windows 7

Traductions disponibles Traductions disponibles
Numéro d'article: 2383895 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Symptômes

Lorsque vous ouvrez une liste (.cil) dans Volume Activation Management Tool (VAMT) 2.0 sur un ordinateur Windows 7, le message d'erreur suivant peut s'afficher :

« Un élément avec la même clé a déjà été ajouté ».

Cause

Ce problème peut se produire si l'ordinateur contient plusieurs cartes réseau et si ces cartes réseau présentent la même adresse MAC. Ce problème peut par exemple se produit si vous disposez de deux cartes réseau pour un ordinateur virtuel et si vous configurez ces cartes réseau de manière à ce qu'elles aient la même adresse MAC.

Si vous ouvrez le fichier .cil dans cette situation, vous voyez une entrée semblable à la suivante :

NetworkName="contoso.com" Id="e3f3f83c-f050-4d81-9117-xx">
<MacAddresses>
<MacAddress>00:11:11:CF:FC:xx</MacAddress>
<MacAddress>00:11:11:CF:FC:xx</MacAddress>
</MacAddresses>

Résolution

Afin que nous puissions supprimer pour vous les entrées en double dans le fichier .CIL, consultez la section « Aidez-moi ». Si vous préférez supprimer vous-même les entrées en double du fichier .CIL, consultez la section « Je résous le problème moi-même ».

Aidez-moi



Pour résoudre ce problème automatiquement, cliquez sur le bouton ou le lien Fix it. Cliquez ensuite sur Exécuter dans la boîte de dialogue Téléchargement de fichier et suivez la procédure indiquée par l'Assistant Résolution.


Résoudre ce problème
Microsoft Fix it 50785


Remarques
  • Sélectionnez un fichier .CIL dont vous voulez supprimer les entrées en double.
  • La solution de réparation ne fonctionne pas si VAMT (Volume Activation Management Tool) 2.0 n'est pas installé à l'emplacement par défaut.
  • Cet Assistant peut n'exister qu'en anglais. Toutefois, la résolution automatique fonctionne aussi pour d'autres versions linguistiques de Windows.
  • Si vous n'utilisez pas l'ordinateur concerné, vous pouvez enregistrer la solution de réparation sur un lecteur flash ou sur un CD-ROM et ensuite l'exécuter sur l'ordinateur concerné par le problème.

Consultez ensuite la section « Le problème est-il résolu ? ».



Je résous le problème moi-même

Pour contourner ce problème, supprimez manuellement les entrées en double du fichier .CIL ou, pour automatiser ce processus, utilisez le code source suivant pour créer un

script Powershell.
param($inputFilePath, $vamtDirPath)

$cilFilePath = Resolve-Path $inputFilePath;
if (!$cilFilePath)
{
Write-Error "Expected input file name of target CIL";
exit 1;
}

if ($vamtDirPath)
{
$vamtDirPath = Resolve-Path $vamtDirPath;
}
else
{
$prograPath = [environment]::GetEnvironmentVariable("ProgramFiles(x86)");

if (!$prograPath -or $prograPath -eq "")
{
$prograPath = [environment]::GetEnvironmentVariable("ProgramFiles");
}

$vamtDirPath = $prograPath + "\VAMT 2.0"
}

try
{
$assembly = [System.Reflection.Assembly]::LoadFile($vamtDirPath + "\Vamtrt.dll");
}
catch
{
Write-Error "Error while attempting to load VAMT assembly. Provide the correct path to your VAMT installation if VAMT is not installed to the default directory.";
exit 1;
}

$fileSerializer = new-object Microsoft.SoftwareLicensing.Vamt.FileSerializer($cilFilePath);

$softwareLicensingData = $fileSerializer.Deserialize();

for ($i = 0; $i -lt $softwareLicensingData.Machines.Length; $i++)
{
$machine = $softwareLicensingData.Machines[$i];

if ($machine.MacAddresses.Count -gt 0)
{
$distinctMacAddrs = new-object System.Collections.ObjectModel.Collection[string];

foreach ($mac in $machine.MacAddresses)
{
if (!$distinctMacAddrs.Contains($mac))
{
$distinctMacAddrs.Add($mac);
}
}

$machine.MacAddresses.Clear();

foreach ($distinctMac in $distinctMacAddrs)
{
$machine.MacAddresses.Add($distinctMac);
}
}
}

$fileSerializer.Serialize($softwareLicensingData);




Ensuite, suivez ces étapes sur un ordinateur Windows 7 :
  1. Copiez votre fichier CIL enregistré dans c:\script. Par exemple, c:\script\saved.cil
  2. Copiez le code source fourni dans cet article de la Base de connaissances dans le Presse-papiers
  3. Cliquez sur Démarrer, Tous les programmes, Accessoires, Windows Powershell, « Windows powershell ise »
  4. Dans Windows PowerShell, cliquez dans la fenêtre Untitled1.ps1
  5. Coller le contenu du script à partir de cet article
  6. Cliquez sur Fichier, Enregistrer sous, c:\script\ScrubCil.ps1
  7. Cliquez sur Démarrer, Tous les programmes, Accessoires, Windows Powershell, cliquez ave le bouton droit sur « Windows powershell » et choisissez « Exécuter en tant qu'administrateur »
  8. À l'invite de powershell, tapez les commandes suivantes
    cd \script
    set-executionpolicy unrestricted
    .\ScrubCil.ps1 saved.cil


Le problème est-il résolu ?

  • Vérifiez que le problème est résolu. Si c'est le cas, vous n'avez plus besoin de cette section. Sinon, vous pouvez contacter le support.
  • Vos commentaires sont les bienvenus. Pour nous faire part de vos commentaires ou d'un problème concernant cette solution, écrivez-nous sur le blog « Aidez-moi » ou envoyez-nous un courrier électronique.

Propriétés

Numéro d'article: 2383895 - Dernière mise à jour: mardi 20 décembre 2011 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Windows 7 Entreprise
Mots-clés : 
kbfixme kbmsifixme KB2383895
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com