diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1c97c17e9e44814f75294b45f12b4788f7510695..bd06cc51e11cb9d1a8ec5584bc266f8bc95a0911 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -37,6 +37,7 @@
 - [#1751](https://github.com/influxdata/telegraf/issues/1751): Fix powerdns integer parse error handling.
 - [#1752](https://github.com/influxdata/telegraf/issues/1752): Fix varnish plugin defaults not being used.
 - [#1517](https://github.com/influxdata/telegraf/issues/1517): Fix windows glob paths.
+- [#1137](https://github.com/influxdata/telegraf/issues/1137): Fix issue loading config directory on windows.
 
 ## v1.0.1 [unreleased]
 
diff --git a/internal/config/config.go b/internal/config/config.go
index 30e62789023ec11739c19035e48b6799c550f3c3..077aa3076bba46c0e04de628a8b1f7f990921240 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -404,24 +404,21 @@ func PrintOutputConfig(name string) error {
 }
 
 func (c *Config) LoadDirectory(path string) error {
-	directoryEntries, err := ioutil.ReadDir(path)
-	if err != nil {
-		return err
-	}
-	for _, entry := range directoryEntries {
-		if entry.IsDir() {
-			continue
+	walkfn := func(thispath string, info os.FileInfo, _ error) error {
+		if info.IsDir() {
+			return nil
 		}
-		name := entry.Name()
+		name := info.Name()
 		if len(name) < 6 || name[len(name)-5:] != ".conf" {
-			continue
+			return nil
 		}
-		err := c.LoadConfig(filepath.Join(path, name))
+		err := c.LoadConfig(thispath)
 		if err != nil {
 			return err
 		}
+		return nil
 	}
-	return nil
+	return filepath.Walk(path, walkfn)
 }
 
 // Try to find a default config file at these locations (in order):