Function: w32--os-description

w32--os-description is a byte-compiled function defined in w32-fns.el.gz.

Signature

(w32--os-description)

Documentation

Return a string describing the underlying OS and its version.

Source Code

;; Defined in /usr/src/emacs/lisp/w32-fns.el.gz
(defun w32--os-description ()
  "Return a string describing the underlying OS and its version."
  (let* ((w32ver (car (w32-version)))
         (w9x-p (< w32ver 5))
         (key (if w9x-p
                  "SOFTWARE/Microsoft/Windows/CurrentVersion"
                "SOFTWARE/Microsoft/Windows NT/CurrentVersion"))
         (os-name (w32-read-registry 'HKLM key "ProductName"))
         (os-version (if w9x-p
                         (w32-read-registry 'HKLM key "VersionNumber")
                       (let ((vmajor
                              (w32-read-registry 'HKLM key
                                                 "CurrentMajorVersionNumber"))
                             (vminor
                              (w32-read-registry 'HKLM key
                                                 "CurrentMinorVersionNumber")))
                         (if (and vmajor vmajor)
                             (format "%d.%d" vmajor vminor)
                           (w32-read-registry 'HKLM key "CurrentVersion")))))
         (os-csd (w32-read-registry 'HKLM key "CSDVersion"))
         (os-rel (or (w32-read-registry 'HKLM key "ReleaseID")
                     (w32-read-registry 'HKLM key "CSDBuildNumber")
                 "0"))  ; No Release ID before Windows Vista
         (os-build (w32-read-registry 'HKLM key "CurrentBuildNumber"))
         (os-rev (w32-read-registry 'HKLM key "UBR"))
         (os-rev (if os-rev (format "%d" os-rev))))
    (if w9x-p
        (concat
         (if (not (string-match "\\`Microsoft " os-name)) "Microsoft ")
         os-name
         " (v" os-version ")")
      (concat
       (if (not (string-match "\\`Microsoft " os-name)) "Microsoft ")
       os-name      ; Windows 7 Enterprise
       " "
       os-csd       ; Service Pack 1
       (if (and os-csd (> (length os-csd) 0)) " " "")
       "(v"
       os-version "." os-rel "." os-build (if os-rev (concat "." os-rev))
       ")"))))