我尝试使用下面的代码
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。用户配置文件存储在哪里?如何二次创建用户?
发布于 2014-11-08 14:54:24
我认为你在默认情况下创建了一个权限有限的用户,它不能创建任何其他用户,这就是为什么你要用EFI_ACCESS_DENIED作为回报。
以下是UEFI 2.4 Rev B specs第1837页的相关引述:
如果当前用户配置文件不允许创建新的用户配置文件,则将返回EFI_ACCESS_DENIED。如果不支持创建新的用户配置文件,则返回EFI_UNSUPPORTED。
Here您可以找到使用您正在尝试使用的协议的示例。
用户配置文件存储在必须防止篡改的非易失性存储器中,所以这是实现定义的事情,但我所知道的所有实现都使用NVRAM。
https://stackoverflow.com/questions/26762060
复制相似问题