1

Windows ランタイム コンポーネントとユニバーサル Windows アプリケーション (UWA) を含むプロジェクトに、Windows 10 マシンと Visual Studio 2015 を使用しています。UWA には、ログインしているユーザーの UserIdentity (ウィンドウ NT ID、つまり「ドメイン名/ユーザー名」) を取得するタスクを実行する Windows ランタイム コンポーネントの参照があります。ランタイム コンポーネントをデバッグするために、UWA テスト プロジェクトが作成されます。ランタイム コンポーネントで UserIdentity を取得すると、Windows10 cordova プロジェクトへのコンポーネント参照を使用して、JavaScript で UserIdentity を取得できます。
ここで、ユーザーのドメイン名/ユーザー名にログインするためのコードが機能しないという問題に直面しています。このコードを 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();
    }
} 

最後にデータ変数に空の文字列を取得しています。誰かが経験を共有するか、言及されたプラットフォームでこの種の問題に直面したことがあれば、それは素晴らしいことです.

4

1 に答える 1

0

ユーザークラスは、使用したWindows 8.1のUserInformationとは異なる、Windows 10の新しいクラスです。ユーザーの個人情報へのアクセスは、要求する必要がある特権であるため、ストア アプリの Package.appxmanifest で、[機能] タブの [ユーザー アカウント情報] 機能を有効にする必要があります。

を呼び出すGetPropertyAsyncと、ユーザーは次のようにシステムから許可プロンプトを受け取ります。それを受け入れると、許可を取得できます。機能の詳細については、このドキュメントを参照してください。 ここに画像の説明を入力

method の場合GetPropertyAsync、プロパティが見つからないか利用できない場合は、空の文字列が返されます。したがって、すでに行っているにもかかわらず、まだ null 値を取得している場合は、プロパティが見つからないか利用できない可能性があります。

現在のユーザーを取得するためにコードを実行して得た結果を次に示しDomainNameます (Windows ランタイム コンポーネントにもコードを配置しました)。

ここに画像の説明を入力

詳細は公式サンプルを参照してください。

于 2016-12-20T06:01:01.500 に答える