diff --git a/DataSourceVMwareGuestInfo.py b/DataSourceVMwareGuestInfo.py
index 9fe83ac..3cf3450 100644
--- a/DataSourceVMwareGuestInfo.py
+++ b/DataSourceVMwareGuestInfo.py
@@ -38,7 +38,7 @@
 
 LOG = logging.getLogger(__name__)
 NOVAL = "No value found"
-VMTOOLSD = find_executable("vmtoolsd")
+VMWARE_RPCTOOL = find_executable("vmware-rpctool")
 VMX_GUESTINFO = "VMX_GUESTINFO"
 
 
@@ -94,7 +94,7 @@
     def __init__(self, sys_cfg, distro, paths, ud_proc=None):
         sources.DataSource.__init__(self, sys_cfg, distro, paths, ud_proc)
         if not get_data_access_method():
-            LOG.error("Failed to find vmtoolsd")
+            LOG.error("Failed to find vmware-rpctool")
 
     def get_data(self):
         """
@@ -107,7 +107,7 @@
         such as calling persist_instance_data.
         """
         if not get_data_access_method():
-            LOG.error("vmtoolsd is required to fetch guestinfo value")
+            LOG.error("vmware-rpctool is required to fetch guestinfo value")
             return False
 
         # Get the metadata.
@@ -245,10 +245,10 @@
         else:
             return val
 
-    if data_access_method == VMTOOLSD:
+    if data_access_method == VMWARE_RPCTOOL:
         try:
             (stdout, stderr) = util.subp(
-                [VMTOOLSD, "--cmd", "info-get guestinfo." + key])
+                [VMWARE_RPCTOOL, "info-get guestinfo." + key])
             if stderr == NOVAL:
                 LOG.debug("No value found for key %s", key)
             elif not stdout:
@@ -517,8 +517,8 @@
 def get_data_access_method():
     if os.environ.get(VMX_GUESTINFO, ""):
         return VMX_GUESTINFO
-    if VMTOOLSD:
-        return VMTOOLSD
+    if VMWARE_RPCTOOL:
+        return VMWARE_RPCTOOL
     return None
 
 
