Używam Windows 10 10240 Univasal aplikacji Windows, gdy używam Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamilyVersion, aby uzyskać wersję deivce, zwraca ciąg "2814750438211605" zamiast formatu wersji (major.minor.revision.build). Ktoś może mi powiedzieć, co oznacza ciąg "2814750438211605"?Windows 10 get DeviceFamilyVersion
Odpowiedz
Aplikacja powinna traktować te dane jako nieprzezroczyste i wystarczy zalogować że „tak jak jest”. Jest to 64-bitowa wartość dziesiętna jako ciąg.
Pamiętaj intencję tego API jest zapewnienie ciąg dziennika, z których można zrekonstruować numer wersji OS wsparcia/Analytics. Na swojej analizie po stronie serwera, można go przekształcić w razie potrzeby lub po prostu użyć go jako unikalny identyfikator wersji ... Jeśli rzeczywiście próbuje zanalizować to wykonywania, następnie używasz go nieprawidłowo i całkiem prawdopodobne, aby odtworzyć te same problemy, które spowodowało GetVersionEx
i VerifyVersionInfo
wycofywana w pierwszej kolejności.
Nie analizowania łańcuch w czasie wykonywania w aplikacji. Wystarczy przechowywać „jak jest” Pamiętaj, że w systemie Windows 10, klient naprawdę nie ma pojęcia, o co ci chodzi, jeśli zapytać „Co wersja systemu Windows masz?”. Odpowiedź brzmi "10" i najprawdopodobniej nadal będzie "10" przez długi czas.
To bardzo mało, aby pomóc w rozwiązywaniu problemów z pola. Jeśli chcesz uzyskać pełne DFV zalogowane w analitykach do debugowania jakichkolwiek problemów, musisz przejść przez wspomnianą wyżej trasę Martin. – bc3tech
To, czego naprawdę potrzebujesz, to zrzuty po awarii, tak? Możesz je dostać przez portal. –
niekoniecznie. Każde logowanie, naprawdę. okna dialogowe "Wyślij raport" i wiadomości e-mail ... itd. – bc3tech
Wartość wersji systemu operacyjnego Windows 10 znajduje się w tej właściwości łańcucha:
Windows.System.Profile. AnalyticsInfo.VersionInfo.DeviceFamilyVersion
Zwraca wartość ciągu, np. "2814750438211613".
Aby przekonwertować ten długi numer do czytelnego formatu użytku to:
string sv = AnalyticsInfo.VersionInfo.DeviceFamilyVersion;
ulong v = ulong.Parse(sv);
ulong v1 = (v & 0xFFFF000000000000L) >> 48;
ulong v2 = (v & 0x0000FFFF00000000L) >> 32;
ulong v3 = (v & 0x00000000FFFF0000L) >> 16;
ulong v4 = v & 0x000000000000FFFFL;
string version = $"{v1}.{v2}.{v3}.{v4}"; // == 10.0.10240.16413
dziękuję, działa, ale jakoś nie wiem, dlaczego to nie działa w javascript .... Mam nadzieję, że ktoś może mi odpowiedzieć później .. daje mi 0 w pierwszej cyfrze. wersja var = 2814750438211613, V1 = (wersja i 0xFFFF000000000000) >> 48 V2 = (wersja i 0x0000FFFF00000000) >> 32 v3 = (wersja i 0x00000000FFFF0000) >> 16 V4 = wersja i 0x000000000000FFFF; Pierwszy z nich będzie niepoprawny i da 0 zamiast 10. –
Tylko fajną sposób to zrobić .. I Creadted enum, który jest używany w celu dopasowania predefiniowanych rodziny urządzeń
public enum DeviceFamily
{
Unknown,
Desktop,
Tablet,
Mobile,
SurfaceHub,
Xbox,
Iot
}
Ta metoda sprawdzi i przetworzy go w enum.
var q = ResourceContext.GetForCurrentView().QualifierValues;
if (q.ContainsKey("DeviceFamily"))
{
try
{
Enum.Parse(typeof(DeviceFamily) , q["DeviceFamily"]);
//send the user notification about the device family he is in.
}
catch (Exception ex) { }
}
Jeśli znalazłeś to pytanie i polubiłeś mnie, szukając sposobu na to w JavaScript, może ci się przydać.
getDeviceFamilyVersion() {
let deviceFamilyVersion = Windows.System.Profile.AnalyticsInfo.versionInfo.deviceFamilyVersion;
let deviceFamilyVersionDecimalFormat = parseInt(deviceFamilyVersion);
if (isNaN(deviceFamilyVersionDecimalFormat)) {
throw new Error('cannot parse device family version number');
}
let hexString = deviceFamilyVersionDecimalFormat.toString(16).toUpperCase();
while (hexString.length !== 16) { // this is needed because JavaScript trims the leading zeros when converting to hex string
hexString = '0' + hexString;
}
let hexStringIterator = 0;
let versionString = '';
while (hexStringIterator < hexString.length) {
let subHexString = hexString.substring(hexStringIterator, hexStringIterator + 4);
let decimalValue = parseInt(subHexString, 16);
versionString += decimalValue + '.';
hexStringIterator += 4;
}
return versionString.substring(0, versionString.length - 1);
}
- 1. Realm na systemie Windows 10
- 2. Apccelerator Titanium Bug Windows 10
- 3. Windows 10 IoT Bluetooth LE
- 4. MSCOMCTL.ocx brakuje systemu Windows 10
- 5. DLL MSHTML na Windows 10
- 6. Windows 10 Mobile Błąd: DEP6200
- 7. Windows 10 i dysk sieciowy
- 8. Podsystem Windows 10 Linux. Jak zainstalować MongoDB
- 9. Usuń pasek tytułu z formularza Windows (styl Windows 10)
- 10. MS Windows 10: Błąd: Polecenie nie powiodło się: git -c core.longpaths = true config --get remote.origin.url
- 11. Wiele instancji aplikacji uniwersalnej dla systemu Windows (Windows 10)
- 12. Uruchamianie uniwersalnych aplikacji systemu Windows 10 w systemie Windows 8.1
- 13. Windows 10 - Bash (Ubuntu) SU (hasło roota)
- 14. Java "os.name" dla systemu Windows 10?
- 15. Windows 10 x: Bind to SelectedItem
- 16. Instalacja Git 1.9.5 na Windows 10
- 17. XAML 2009 i .NET 4.6/Windows 10
- 18. Ściąganie certyfikatu w uniwersalnej aplikacji Windows 10
- 19. Wyczyść Powrót Nawigacja Stos systemu Windows 10
- 20. Windows 10 Okno dialogowe paska tytułowego zachowanie
- 21. Jak zainstalować scipy na Windows 10?
- 22. Zastępowanie pędzla kompozycji Windows 10 UWP
- 23. Windows 10 Uniwersalny dostęp do pliku/katalogu
- 24. Gdzie jest gacutil.exe w systemie Windows 10?
- 25. Jak utworzyć instalator pakietu Windows 10 HWA?
- 26. Windows 10 Powiadomienia o toastach Aplikacja komputerowa
- 27. Zgodność wsteczna systemu Windows 10 Uniwersalna aplikacja
- 28. Windows 10 - kod Visual Studio - usuwanie pylinta
- 29. Problemy podczas kompilacji w systemie Windows 10
- 30. Przycisk powrotu systemu Windows 10 UAP
Czy otrzymujesz taki sam wynik, jeśli używasz 'Windows.System.Profile.AnalyticsInfo.AnalyticsVersionInfo.DeviceFamilyVersion'? – Herdo
Jest tam, zamień go na hex. 2814750438211605 == 0x000A000028004015 == 10.0.10240.16405. Numer wersji Win10. –
@HansPassant to świetnie, dziękuję bardzo! – tao