【问题标题】:UEFI Create UserUEFI 创建用户
【发布时间】:2015-01-01 22:21:54
【问题描述】:

我尝试使用此代码

      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。用户配置文件存储在哪里?如何二次创建用户?

【问题讨论】:

    标签: uefi


    【解决方案1】:

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

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

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

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

    用户配置文件存储在非易失性内存中,必须防止被篡改,所以这是实现定义的东西,但我知道的所有实现都使用 NVRAM。

    【讨论】:

    • 我粘贴了这个示例中的代码。在这个项目中调用 VOID CallAddUser(VOID) 函数。在 338 行状态 == EFI_ACCESS_DENIED。
    猜你喜欢
    • 2015-03-13
    • 2023-04-08
    • 2016-01-11
    • 2019-12-14
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2019-04-04
    相关资源
    最近更新 更多