UEFI创建用户

时间:2014-11-05 16:22:47

标签: uefi

我尝试使用此代码

      Status = gBS->OpenProtocol(handles[i], &gEfiUserManagerProtocolGuid, (void **) &mUserManager, gImageHandle, NULL, EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL);
  switch (Status)
  {
  case EFI_SUCCESS:           Print(L"OpenProtocol _____ OK!\n\r");  break;
  case EFI_INVALID_PARAMETER: Print(L"OpenProtocol _____ EFI_INVALID_PARAMETER!\n\r"); break;
  case EFI_UNSUPPORTED:       Print(L"OpenProtocol _____ EFI_UNSUPPORTED!\n\r");       break;
  default:                    Print(L"OpenProtocol _____ Status =  %d  \n\r",Status);  break;
  }

  Status = mUserManager->Create(mUserManager, &User);
  switch (Status)
  {
  case EFI_SUCCESS:           Print(L"Create _____ create successfully!\n\r");    break;
  case EFI_ACCESS_DENIED:     Print(L"Create _____ EFI_ACCESS_DENIED!\n\r");      break;
  case EFI_UNSUPPORTED:       Print(L"Create _____ EFI_UNSUPPORTED!\n\r");        break;
  case EFI_INVALID_PARAMETER: Print(L"Create _____ EFI_INVALID_PARAMETER!\n\r");  break;
  default:                    Print(L"Create _____ Status =  %d  \n\r",Status);   break;
  }

状态返回EFI_SUCCESS,计算机重启。下次我尝试创建用户时,状态返回EFI_ACCESS_DENIED。哪里有用户档案存储?如何在第二次创建用户?

1 个答案:

答案 0 :(得分:0)

我认为您创建的用户默认情况下权限有限,无法创建任何其他用户,这就是您回复EFI_ACCESS_DENIED的原因。

以下是来自UEFI 2.4 Rev B specs的相关引用,第1837页:

  

如果当前用户配置文件不允许创建新的用户配置文件   将返回EFI_ACCESS_DENIED。如果不支持创建新的用户配置文件,那么   返回EFI_UNSUPPORTED。

Here您可以找到使用您尝试使用的协议的示例。

用户配置文件存储在非易失性存储器中,必须保护其免受篡改,因此它是实现定义的,但我所知道的所有实现都使用NVRAM。