From fb6512b72ebf86d5273744774388deb14c8a21ae Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Sat, 29 Jun 2019 18:16:00 -0400 Subject: log windows version --- src/shared/util.h | 94 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 64 insertions(+), 30 deletions(-) (limited to 'src/shared/util.h') diff --git a/src/shared/util.h b/src/shared/util.h index 46bdea78..deaf6fcc 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -22,6 +22,8 @@ along with Mod Organizer. If not, see . #include +#include + #define WIN32_LEAN_AND_MEAN #include @@ -46,58 +48,90 @@ std::wstring ToLower(const std::wstring &text); bool CaseInsensitiveEqual(const std::wstring &lhs, const std::wstring &rhs); -class Environment + +namespace env +{ + +class Module { public: - class Module + explicit Module(QString path, std::size_t fileSize); + + const QString& path() const; + QString displayPath() const; + + std::size_t fileSize() const; + const QString& version() const; + const QString& versionString() const; + QString timestampString() const; + + QString toString() const; + +private: + struct FileInfo { - public: - explicit Module(QString path, std::size_t fileSize); + VS_FIXEDFILEINFO ffi; + QString fileDescription; + }; - const QString& path() const; - QString displayPath() const; + QString m_path; + std::size_t m_fileSize; + QString m_version; + QDateTime m_timestamp; + QString m_versionString; + QString m_md5; - std::size_t fileSize() const; - const QString& version() const; - const QString& versionString() const; - QString timestampString() const; + FileInfo getFileInfo() const; - QString toString() const; + QString getVersion(const VS_FIXEDFILEINFO& fi) const; + QDateTime getTimestamp(const VS_FIXEDFILEINFO& fi) const; + QString getMD5() const; - private: - struct FileInfo - { - VS_FIXEDFILEINFO ffi; - QString fileDescription; - }; + VS_FIXEDFILEINFO getFixedFileInfo(std::byte* buffer) const; + QString getFileDescription(std::byte* buffer) const; +}; - QString m_path; - std::size_t m_fileSize; - QString m_version; - QDateTime m_timestamp; - QString m_versionString; - QString m_md5; - FileInfo getFileInfo() const; +class WindowsVersion +{ +public: + WindowsVersion(); - QString getVersion(const VS_FIXEDFILEINFO& fi) const; - QDateTime getTimestamp(const VS_FIXEDFILEINFO& fi) const; - QString getMD5() const; + QString toString() const; + +private: + DWORD m_realMajor, m_realMinor, m_realBuild; + DWORD m_major, m_minor, m_build; + QString m_buildLab, m_productName, m_releaseID; + DWORD m_UBR; + std::optional m_elevated; + + void getVersion(); + void getRealVersion(HINSTANCE ntdll); + void getReportedVersion(HINSTANCE ntdll); + void getRelease(); + void getElevated(); +}; - VS_FIXEDFILEINFO getFixedFileInfo(std::byte* buffer) const; - QString getFileDescription(std::byte* buffer) const; - }; +class Environment +{ +public: Environment(); const std::vector& loadedModules(); + const WindowsVersion& windowsVersion() const; private: std::vector m_modules; + WindowsVersion m_windows; void getLoadedModules(); }; +} // namespace env + + MOBase::VersionInfo createVersionInfo(); } // namespace MOShared -- cgit v1.3.1