Универсальный компонент среды выполнения приложений Windows, не приводящий к появлению идентификатора пользователя в Windows 10 с использованием Visual Studio 2015
Я использую компьютер с Windows 10 и Visual Studio 2015 для проекта, в котором есть компонент времени выполнения Windows и универсальное приложение Windows (UWA). UWA имеет ссылку на компонент среды выполнения Windows, который выполняет задачу для получения идентификатора пользователя (идентификатор Windows NT, т. Е. "Имя_домена / имя_пользователя") вошедшего в систему пользователя. Тестовый проект UWA создан для отладки компонента Run time. Если мы получим UserIdentity в компоненте времени выполнения, чтобы мы могли использовать ссылку на компонент нашего проекта cordova для Windows10, чтобы получить UserIdentity в javascript.
Здесь мы сталкиваемся с проблемой, когда ни один код не работает, чтобы войти в систему под именем пользователя DomainName/username. Мы обновили этот код с Windows 8.1 до 10, так как этот код прекрасно работает с Windows 8.1, но имеет проблемы в Windows 10. Ниже приведен код, который мы используем для получения UserIdentity:
public sealed class getNTID
{
public static IAsyncOperation<string> DownloadAsStringsAsync()
{
return Task.Run<string>(async () =>
{
IReadOnlyList<User> users = await User.FindAllAsync();
var current = users.Where(p => p.AuthenticationStatus == UserAuthenticationStatus.LocallyAuthenticated &&
p.Type == UserType.LocalUser).FirstOrDefault();
var data = await current.GetPropertyAsync(KnownUserProperties.AccountName);
return data.ToString();
}).AsAsyncOperation();
}
}
Мы получаем пустую строку в переменной данных в конце. Было бы здорово, если бы кто-то поделился своим опытом или столкнулся с такого рода проблемами с упомянутой платформой.
1 ответ
Пользовательский класс является новым для Windows 10, который отличается от UserInformation в Windows 8.1, которую вы использовали. Получение доступа к личной информации пользователя - это привилегия, которую вы должны запросить, поэтому в Package.appxmanifest приложения вашего магазина вам нужно будет включить функцию "Информация об учетной записи пользователя" на вкладке "Возможности".
Когда вы звоните GetPropertyAsync
Ваш пользователь получит запрос на разрешение от системы следующим образом: примите, что затем вы можете получить разрешение. Более подробную информацию о возможностях, пожалуйста, обратитесь к этому документу.
За GetPropertyAsync
Метод, если свойство отсутствует или недоступно, возвращается пустая строка. Так что, если вы уже сделали, но все еще получаете нулевое значение, возможно, свойство отсутствует или недоступно.
Вот результат, который я получил, запустив ваш код, чтобы получить DomainName
текущего пользователя (я также поместил код в компонент времени выполнения Windows).
Более подробную информацию, пожалуйста, обратитесь к официальному образцу.