2016-02-18 134 views
0

我有一個用作LOB應用程序的Windows 8.1應用程序。在Windows 10上運行Windows 8.1應用程序獲取用戶信息

的應用程序中使用到下面的代碼行獲得域用戶:

string user = await Windows.System.UserProfile.UserInformation.GetDomainNameAsync(); 

這一切工作正常和應用程序部署在衆多8.1平板電腦。

不過,我剛剛升級我的PC到Windows 10和該行代碼現在返回一個空字符串。

我有一個谷歌,發現這篇文章:https://msdn.microsoft.com/library/windows/apps/windows.system.userprofile.userinformation.aspx

但它的建議只是應用程序升級到Windows 10通用的應用程序或回滾到Windows 8.1。這並不是一個非常好的選擇,因爲我的平板電腦無處不在運行8.1。

那麼,有誰知道如何解決這個問題?這基本上意味着我無法在Windows 10 PC上開發Windows 8應用程序。

回答

0

的UserInformation類不會在Windows 10

請參閱此鏈接存在了:如果向下滾動到此話,你會發現UserInformation類由User類取代 https://msdn.microsoft.com/library/windows/apps/windows.system.userprofile.userinformation.aspx

的Windows 10:

應用程序編譯爲Windows 8使用的UserInformation CL當在Windows 10上運行時,暱稱爲 的用戶信息更長。這是 ,因爲在Windows 10中,應用程序沒有明確的用戶許可就無法訪問用戶信息 ,與默認授予此 權限的Windows 8不同。

如果您有使用UserInformation類的Windows 8應用程序,您應該將您的應用程序遷移到通用Windows平臺(UWP),並且 改爲訪問User類。通用Windows平臺(UWP)應用程序 現在預計會聲明新的 功能,即uap:userAccountInformation,並調用新的API, Windows.System.User.FindAllAsync和User.GetPropertiesAsync,以獲取 的數據。提示

安裝應用的用戶允許訪問其用戶 信息。如果用戶允許應用程序訪問信息, 應用程序將出現在Windows 10設置UI (設置>隱私>帳戶信息)的隱私頁面中。這使得Windows 10用戶可以通過 以每個應用程序爲基礎訪問用戶信息。

所以簡短的答案是否不可能不改變你的代碼。

你可以做的是檢查操作系統運行時和落實獲取用戶信息的2種方式。1適用於Windows 1 Windows 8和1(這樣做也使您的應用程序將在Windows上使用10個設備)

How can I detect if my app is running on Windows 10

If app is running Windows 10: use User class 
Else: use UserInformation class. 

爲了測試它是如何工作在Windows 8上的Windows 10設備,你可以添加一個Windows 8虛擬機,並在那裏測試應用程序。 (不完美,但至少它是東西)

+0

鏈接在我的問題 – Sun

+0

但鏈接給你答案。該代碼仍然可以編譯,但僅適用於Windows 10並且不會返回任何用戶信息。在Windows 8.1上,代碼仍然會返回正確的用戶信息。沒有其他辦法。 – GeertvdC

+0

所以如果你的問題是有任何其他解決方法的答案是:沒有 – GeertvdC

相關問題