你目前正处于脱机状态,正在等待 Internet 重新连接

列表是本文在基于 Windows 7 的计算机上打开时显示"具有相同键的项已存在"的错误

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 2383895
症状
在卷激活管理工具 (VAMT) 2.0 基于 Windows 7 的计算机上打开一个列表 (.cil) 时,您可能会收到以下错误消息:

已存在具有相同键的项。
原因
如果计算机中有多个网络适配器和网络适配器具有相同的 MAC 地址,则可能会出现此问题。例如,如果您有两个网络适配器为虚拟机,并且您将这些具有相同 MAC 地址的网络适配器配置,可能会发生此问题。

如果这种情况下打开.cil 文件,您会看到类似于下面的条目:

NetworkName="contoso.com"Id ="e3f3f83c-f050-4 d 81-9117-xx"1>
<MacAddresses></MacAddresses>
<MacAddress>00:11:11:CF:FC:xx</MacAddress>
<MacAddress>00:11:11:CF:FC:xx</MacAddress>
解决方案
让我们从中删除重复项。CIL 文件,请转到"帮我修复"一节。如果您希望从中删除重复项。CIL 文件,请转到"我自己修复"一节。

帮我修复



若要自动解决此问题,请单击修复 按钮或链接。然后单击运行 文件下载对话框,然后按照修复它向导中的步骤。




注释
  • 请选择。CIL 文件您要删除的重复项。
  • 修复它如果在默认的路径中没有安装 VAMT(Volume Activation Management Tool) 2.0 解决方案不起作用。
  • 此向导可能仅为英文。但是,自动修复功能也适用于其他语言版本的 Windows。
  • 如果您不是在有问题的计算机上操作,请将此修复此问题解决方案保存到闪存驱动器或 CD,然后在出现问题的计算机上运行该方案。

然后,转到"这是否会解决此问题?"一节。



我自己修复

要变通解决此问题,请手动删除重复项。CIL 或自动执行此过程,使用下面的源代码创建

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);




然后,Windows 7 计算机上执行以下步骤:
  1. 复制您已保存。CIL 文件复制到 c:\script。例如 c:\script\saved.cil
  2. 将包含的源代码从本知识库文章复制到剪贴板
  3. 单击开始、 所有程序、 附件、 Windows Powershell、"Windows powershell ise"
  4. 在 Windows PowerShell Untitled1.ps1 窗口中单击
  5. 在这篇文章从脚本中的内容粘贴
  6. 单击文件另存为、 c:\script\ScrubCil.ps1
  7. 单击开始、 所有程序、 附件、 Windows Powershell,右键单击"Windows powershell"并选择"以管理员身份运行"
  8. Powershell 提示符处键入以下命令
    cd \script
    不受限制的组-executionpolicy
    .\ScrubCil.ps1 saved.cil


这是否会解决此问题?

  • 检查问题是否得到解决。如果问题得到解决,表示您完成了这一节。如果不修复该问题,则可以 与支持部门联系.
  • 非常感谢您的反馈意见。若要提供反馈或报告与该解决方案的任何问题,请留言上"帮我修复"博客或给我们发送 电子邮件.
激活卷 fixit 修复 fixme

Warning: This article has been translated automatically

属性

文章 ID:2383895 - 上次审阅时间:06/24/2014 01:01:00 - 修订版本: 3.0

Windows 7 Enterprise

  • kbfixme kbmsifixme kbmt KB2383895 KbMtzh
反馈