diff --git a/README.md b/README.md
index 11df69c..bc32840 100644
--- a/README.md
+++ b/README.md
@@ -97,6 +97,8 @@
 ## Licensing
 
 - See [LICENSE][5]
+- **Note**: The test runner includes some code from the Twisted project, which
+  is [listed under terms other than Apache 2.0][11].
 
 [1]: https://endpoints-proto-datastore.googlecode.com/files/endpoints_proto_datastore.zip
 [2]: http://git-scm.com/book/en/Git-Tools-Submodules
@@ -108,3 +110,4 @@
 [8]: https://developers.google.com/appengine/docs/python/tools/appengineconfig
 [9]: https://developers.google.com/appengine/docs/python/gettingstartedpython27/devenvironment
 [10]: https://github.com/GoogleCloudPlatform/endpoints-proto-datastore/blob/master/endpoints_proto_datastore/endpoints_proto_datastore_test_runner.py
+[11]: http://twistedmatrix.com/trac/browser/trunk/LICENSE
diff --git a/endpoints_proto_datastore/endpoints_proto_datastore_test_runner.py b/endpoints_proto_datastore/endpoints_proto_datastore_test_runner.py
index b09eeaa..cb45a59 100644
--- a/endpoints_proto_datastore/endpoints_proto_datastore_test_runner.py
+++ b/endpoints_proto_datastore/endpoints_proto_datastore_test_runner.py
@@ -12,6 +12,8 @@
 import sys
 import unittest
 
+import test_utils
+
 
 MODULES_TO_TEST = ['utils']
 NO_DEVAPPSERVER_TEMPLATE = ('Either dev appserver file path %r does not exist '
@@ -34,13 +36,10 @@
   # such as google.net.proto
   sys.modules.pop('google', None)
 
-  # TODO(dhermes): Support finding the correct location on Windows too.
   # Find where dev_appserver.py is installed locally. If dev_appserver.py
-  # is not on the path, then 'which' will exit with status code 1 and
-  # subprocess.check_output will raise an exception.
-  dev_appserver_on_path = subprocess.check_output(
-      ['which', 'dev_appserver.py']).strip()
-  if not os.path.exists(dev_appserver_on_path):
+  # is not on the path, then 'which' will return None.
+  dev_appserver_on_path = test_utils.which('dev_appserver.py')
+  if dev_appserver_on_path is None or not os.path.exists(dev_appserver_on_path):
     print >>sys.stderr, NO_DEVAPPSERVER_TEMPLATE % (dev_appserver_on_path,)
     raise SystemExit(1)
 
diff --git a/endpoints_proto_datastore/test_utils.py b/endpoints_proto_datastore/test_utils.py
new file mode 100644
index 0000000..8cd719d
--- /dev/null
+++ b/endpoints_proto_datastore/test_utils.py
@@ -0,0 +1,66 @@
+# Copyright 2013 Google Inc. All Rights Reserved.
+
+"""Utility module for tests.
+
+NOTE: The which method below is borrowed from a project with a different
+LICENSE. See README.md for this project for more details.
+"""
+
+
+import os
+
+
+PATH_ENV_VAR = 'PATH'
+# Used by Windows to add potential extensions to scripts on path
+PATH_EXTENSIONS_ENV_VAR = 'PATHEXT'
+
+
+def which(name, flags=os.X_OK):
+    """Search PATH for executable files with the given name.
+
+    On newer versions of MS-Windows, the PATHEXT environment variable will be
+    set to the list of file extensions for files considered executable. This
+    will normally include things like ".EXE". This fuction will also find files
+    with the given name ending with any of these extensions.
+
+    On MS-Windows the only flag that has any meaning is os.F_OK. Any other
+    flags will be ignored.
+
+    NOTE: Adapted from the Twisted project:
+    ('https://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/'
+     'twisted/python/procutils.py')
+
+    Args:
+      name: String; the name for which to search.
+      flags: Integer; arguments to os.access.
+
+    Returns:
+      String containing the full path of the named file combined with one
+        of the directory choices on PATH (optionally with an extension added).
+        If the script is not on the path, None is returned.
+    """
+    result = []
+
+    path_extension = os.getenv(PATH_EXTENSIONS_ENV_VAR, '')
+    valid_extensions = [extension
+                        for extension in path_extension.split(os.pathsep)
+                        if extension]
+
+    path = os.getenv(PATH_ENV_VAR)
+    if path is None:
+        return
+
+    for directory_on_path in path.split(os.pathsep):
+        potential_match = os.path.join(directory_on_path, name)
+
+        # Unix
+        if os.access(potential_match, flags):
+            return potential_match
+
+        # Windows helper
+        for extension in valid_extensions:
+            potential_match_with_ext = potential_match + extension
+            if os.access(potential_match_with_ext, flags):
+                return potential_match_with_ext
+
+    return result
