diff --git a/diskdetailshelper/diskdetails.go b/diskdetailshelper/diskdetails.go
index 00f6e3fe93c82ac703764d025c9526b9aba6e484..aa9f5e69ad5f594992b25aa0b12f6eef21bc250d 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 e4642f6e8dca41f495b05adbfe331c231d7b46b2..4b35e420b9a1784166852f75b8becedc284d524a 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()