我尝试使用此代码
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。哪里有用户档案存储?如何在第二次创建用户?
答案 0 :(得分:0)
我认为您创建的用户默认情况下权限有限,无法创建任何其他用户,这就是您回复EFI_ACCESS_DENIED的原因。
以下是来自UEFI 2.4 Rev B specs的相关引用,第1837页:
如果当前用户配置文件不允许创建新的用户配置文件 将返回EFI_ACCESS_DENIED。如果不支持创建新的用户配置文件,那么 返回EFI_UNSUPPORTED。
Here您可以找到使用您尝试使用的协议的示例。
用户配置文件存储在非易失性存储器中,必须保护其免受篡改,因此它是实现定义的,但我所知道的所有实现都使用NVRAM。