From 40724686ac751711205ffb7a0da109ec77adb387 Mon Sep 17 00:00:00 2001
From: Sandeep Shewalkar <sandeepss@mkcl.org>
Date: Sat, 3 Mar 2018 14:38:23 +0530
Subject: [PATCH] Diskdetails changes

wmic full path added in command
---
 diskdetailshelper/diskdetails.go           | 17 +++++++++++------
 diskdetailshelper/gopsutil/disk_windows.go | 10 ++++++++--
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/diskdetailshelper/diskdetails.go b/diskdetailshelper/diskdetails.go
index 00f6e3f..aa9f5e6 100644
--- a/diskdetailshelper/diskdetails.go
+++ b/diskdetailshelper/diskdetails.go
@@ -3,6 +3,7 @@ package diskdetailshelper
 import (
 	"bytes"
 	"errors"
+	"os"
 	"os/exec"
 	"regexp"
 	"runtime"
@@ -19,6 +20,8 @@ import (
 	"github.com/shirou/gopsutil/mem"
 )
 
+const WMIC_RELATIVE_PATH = "\\System32\\wbem\\wmic"
+
 // UsageStat struct contains serial number and disk stats
 type UsageStat struct {
 	SerialNumber string      `json:"serialNumber"`
@@ -127,7 +130,8 @@ func AnalyseDisk() (UsageStat, error) {
 // GetDiskDetails returns disk details for windows OS
 func GetDiskDetails() ([]DiskStats, error) {
 	diskStats := []DiskStats{}
-	cmd := exec.Command("wmic")
+	windowsDirPath := os.Getenv("SYSTEMROOT")
+	cmd := exec.Command(windowsDirPath + WMIC_RELATIVE_PATH)
 	cmd.Stdin = strings.NewReader("logicaldisk get caption,drivetype,freespace,size")
 
 	var out bytes.Buffer
@@ -205,18 +209,19 @@ func GetCPUUtilizationPercent(interval time.Duration, percpu bool) ([]float64, e
 // GetCPUPhysicalID returns CPU Physical ID or empty string
 func GetCPUPhysicalID() (string, error) {
 	cpuPhysicalID := ""
-	os := ""
+	serverOS := ""
 	osInfo, err := host.Info()
 	if err != nil {
 		logginghelper.LogError("error occured while getting OS details", err)
 		// return cpuPhysicalID, err
-		os = runtime.GOOS
+		serverOS = runtime.GOOS
 	} else {
-		os = osInfo.OS
+		serverOS = osInfo.OS
 	}
-	switch os {
+	switch serverOS {
 	case "windows":
-		cmd := exec.Command("wmic", "CPU", "get", "ProcessorId")
+		windowsDirPath := os.Getenv("SYSTEMROOT")
+		cmd := exec.Command(windowsDirPath+WMIC_RELATIVE_PATH, "CPU", "get", "ProcessorId")
 		// cmd.Stdin = strings.NewReader("CPU get ProcessorId")
 
 		var out bytes.Buffer
diff --git a/diskdetailshelper/gopsutil/disk_windows.go b/diskdetailshelper/gopsutil/disk_windows.go
index e4642f6..4b35e42 100644
--- a/diskdetailshelper/gopsutil/disk_windows.go
+++ b/diskdetailshelper/gopsutil/disk_windows.go
@@ -4,6 +4,7 @@ package gopsutil
 
 import (
 	"bytes"
+	"os"
 	"regexp"
 	"unsafe"
 
@@ -23,6 +24,8 @@ var (
 	provGetVolumeInformation    = Modkernel32.NewProc("GetVolumeInformationW")
 )
 
+const WMIC_RELATIVE_PATH = "\\System32\\wbem\\wmic"
+
 var (
 	FileFileCompression = int64(16)     // 0x00000010
 	FileReadOnlyVolume  = int64(524288) // 0x00080000
@@ -197,8 +200,10 @@ func GetDiskSerialNumber(name string) string {
 	serialNumberArray := []string{}
 	serialNumberMap := make(map[string]bool)
 
+	windowsDirPath := os.Getenv("SYSTEMROOT")
 	cmd1 := &exec.Cmd{}
-	cmd1 = exec.Command("wmic", "path", "win32_physicalmedia", "get", "SerialNumber")
+	cmd1 = exec.Command(windowsDirPath+WMIC_RELATIVE_PATH, "path", "win32_physicalmedia", "get", "SerialNumber")
+
 	var out1 bytes.Buffer
 	cmd1.Stdout = &out1
 	commandError := cmd1.Run()
@@ -217,7 +222,8 @@ func GetDiskSerialNumber(name string) string {
 	}
 
 	cmd2 := &exec.Cmd{}
-	cmd2 = exec.Command("wmic", "diskdrive", "get", "serialnumber")
+	cmd2 = exec.Command(windowsDirPath+WMIC_RELATIVE_PATH, "diskdrive", "get", "serialnumber")
+
 	var out2 bytes.Buffer
 	cmd2.Stdout = &out2
 	commandError = cmd2.Run()
-- 
GitLab