| 571 | } |
| 572 | |
| 573 | void BoxedContainer::setWindowsVersion(const BoxedWinVersion& version) { |
| 574 | BoxedReg userReg(this, false); |
| 575 | BoxedReg systemReg(this, true); |
| 576 | |
| 577 | BString build = BString::valueOf(version.dwBuildNumber); |
| 578 | if (version.dwPlatformId == VER_PLATFORM_WIN32_NT) { |
| 579 | |
| 580 | BString ver = B(version.szCurrentVersion); |
| 581 | if (ver.length() == 0) { |
| 582 | ver = BString::valueOf(version.dwMajorVersion) + "." + BString::valueOf(version.dwMinorVersion); |
| 583 | } |
| 584 | BString product = B("Microsoft ") + version.szDescription; |
| 585 | |
| 586 | systemReg.writeKey(szKeyNT, "CurrentVersion", ver.c_str()); |
| 587 | systemReg.writeKey(szKeyNT, "CSDVersion", version.szCSDVersion); |
| 588 | systemReg.writeKeyDword(szKeyNT, "CurrentMajorVersionNumber", version.dwMajorVersion); |
| 589 | systemReg.writeKeyDword(szKeyNT, "CurrentMinorVersionNumber", version.dwMinorVersion); |
| 590 | systemReg.writeKey(szKeyNT, "CurrentBuild", build.c_str()); |
| 591 | systemReg.writeKey(szKeyNT, "CurrentBuildNumber", build.c_str()); |
| 592 | systemReg.writeKey(szKeyNT, "ProductName", product.c_str()); |
| 593 | systemReg.writeKey(szKeyProdNT, "ProductType", version.szProductType); |
| 594 | systemReg.writeKeyDword(szKeyWindNT, "CSDVersion", (U32)((version.wServicePackMajor << 8) | version.wServicePackMinor)); |
| 595 | systemReg.writeKey(szKeyEnvNT, "OS", "Windows_NT"); |
| 596 | |
| 597 | systemReg.writeKey(szKey9x, "VersionNumber", nullptr); |
| 598 | systemReg.writeKey(szKey9x, "SubVersionNumber", nullptr); |
| 599 | systemReg.writeKey(szKey9x, "ProductName", nullptr); |
| 600 | userReg.writeKey("Software\\Wine", "Version", nullptr); |
| 601 | } else if (version.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { |
| 602 | BString ver = BString::valueOf(version.dwMajorVersion) + "." + BString::valueOf(version.dwMinorVersion) + "." + BString::valueOf(version.dwBuildNumber); |
| 603 | BString product = B("Microsoft ") + version.szDescription; |
| 604 | |
| 605 | systemReg.writeKey(szKeyNT, "CurrentVersion", nullptr); |
| 606 | systemReg.writeKey(szKeyNT, "CSDVersion", nullptr); |
| 607 | systemReg.writeKey(szKeyNT, "CurrentMajorVersionNumber", nullptr); |
| 608 | systemReg.writeKey(szKeyNT, "CurrentMinorVersionNumber", nullptr); |
| 609 | systemReg.writeKey(szKeyNT, "CurrentBuild", nullptr); |
| 610 | systemReg.writeKey(szKeyNT, "CurrentBuildNumber", nullptr); |
| 611 | systemReg.writeKey(szKeyNT, "ProductName", nullptr); |
| 612 | systemReg.writeKey(szKeyProdNT, "ProductType", nullptr); |
| 613 | systemReg.writeKey(szKeyWindNT, "CSDVersion", nullptr); |
| 614 | systemReg.writeKey(szKeyEnvNT, "OS", nullptr); |
| 615 | |
| 616 | systemReg.writeKey(szKey9x, "VersionNumber", ver.c_str()); |
| 617 | systemReg.writeKey(szKey9x, "SubVersionNumber", version.szCSDVersion); |
| 618 | systemReg.writeKey(szKey9x, "ProductName", product.c_str()); |
| 619 | userReg.writeKey("Software\\Wine", "Version", nullptr); |
| 620 | } else { |
| 621 | systemReg.writeKey(szKeyNT, "CurrentVersion", nullptr); |
| 622 | systemReg.writeKey(szKeyNT, "CSDVersion", nullptr); |
| 623 | systemReg.writeKey(szKeyNT, "CurrentBuild", nullptr); |
| 624 | systemReg.writeKey(szKeyNT, "CurrentBuildNumber", nullptr); |
| 625 | systemReg.writeKey(szKeyNT, "ProductName", nullptr); |
| 626 | systemReg.writeKey(szKeyProdNT, "ProductType", nullptr); |
| 627 | systemReg.writeKey(szKeyWindNT, "CSDVersion", nullptr); |
| 628 | systemReg.writeKey(szKeyEnvNT, "OS", nullptr); |
| 629 | |
| 630 | systemReg.writeKey(szKey9x, "VersionNumber", nullptr); |