diff --git a/export.js b/export.js index 9420719..67cf158 100644 --- a/export.js +++ b/export.js @@ -115,7 +115,7 @@ const exportData = async proto => { const question = (query) => new Promise(resolve => { rl.question(query, resolve) }) - const chosen = await question("导出至: \n[0] 椰羊 (https://cocogoat.work/achievement)\n[1] Paimon.moe\n[2] Seelie.me\n[3] 表格文件 (默认)\n> ") + const chosen = await question("导出至: \n[0] 椰羊 (https://cocogoat.work/achievement)\n[1] Paimon.moe\n[2] Seelie.me\n[3] 表格文件 (默认)\n输入一个数字(0-3): ") rl.close() switch (chosen) { case "0": diff --git a/native/src/main.cc b/native/src/main.cc index 11f1f8c..939378b 100644 --- a/native/src/main.cc +++ b/native/src/main.cc @@ -113,18 +113,29 @@ namespace native { if (RegUtils::GetString(HKEY_CURRENT_USER, L"Control Panel\\International\\Geo", L"Name", country) != ERROR_SUCCESS) { country = L"CN"; } - auto computer = retrieveWmi(); - auto os = retrieveWmi(); - string osv = os.Version; Object obj = Object::New(env); - obj.Set("model", Napi::String::New(env, computer.Model)); obj.Set("locale", Napi::String::New(env, WStringToString(locale))); - obj.Set("oemName", Napi::String::New(env, computer.Manufacturer)); - obj.Set("osBuild", Napi::String::New(env, osv + "." + to_string(buildNum))); - obj.Set("osVersion", Napi::String::New(env, osv)); obj.Set("screenSize", Napi::String::New(env, to_string(sw) + "x" + to_string(sh))); obj.Set("carrierCountry", Napi::String::New(env, WStringToString(country))); - obj.Set("timeZoneOffset", Napi::Number::New(env, os.CurrentTimeZone)); + try { + auto computer = retrieveWmi(); + obj.Set("model", Napi::String::New(env, computer.Model)); + obj.Set("oemName", Napi::String::New(env, computer.Manufacturer)); + } catch (Wmi::WmiException &e) { + obj.Set("model", Napi::String::New(env, "Unknown")); + obj.Set("oemName", Napi::String::New(env, "Unknown")); + } + try { + auto os = retrieveWmi(); + string osv = os.Version; + obj.Set("osBuild", Napi::String::New(env, osv + "." + to_string(buildNum))); + obj.Set("osVersion", Napi::String::New(env, osv)); + obj.Set("timeZoneOffset", Napi::Number::New(env, os.CurrentTimeZone)); + } catch (Wmi::WmiException &e) { + obj.Set("osBuild", Napi::String::New(env, "Unknown")); + obj.Set("osVersion", Napi::String::New(env, "Unknown")); + obj.Set("timeZoneOffset", Napi::Number::New(env, 480)); + } return obj; }