diff --git a/pd/src/s_file.c b/pd/src/s_file.c
index f2b127c358fe166e6f0ecc72384d24e289dc51b7..1c18096f5c668fbb96ce325123d9ab7819742de8 100644
--- a/pd/src/s_file.c
+++ b/pd/src/s_file.c
@@ -189,11 +189,16 @@ static int sys_getpreference(const char *key, char *value, int size)
 {
     HKEY hkey;
     DWORD bigsize = size;
-    LONG err = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+    LONG err = RegOpenKeyEx(HKEY_CURRENT_USER,
         "Software\\Purr-Data", 0,  KEY_QUERY_VALUE, &hkey);
     if (err != ERROR_SUCCESS)
     {
-        return (0);
+        err = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+            "Software\\Purr-Data", 0,  KEY_QUERY_VALUE, &hkey);
+        if (err != ERROR_SUCCESS)
+        {
+            return (0);
+	}
     }
     err = RegQueryValueEx(hkey, key, 0, 0, value, &bigsize);
     if (err != ERROR_SUCCESS)
@@ -216,7 +221,7 @@ static void sys_initsavepreferences( void)
 static void sys_putpreference(const char *key, const char *value)
 {
     HKEY hkey;
-    LONG err = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
+    LONG err = RegCreateKeyEx(HKEY_CURRENT_USER,
         "Software\\Purr-Data", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE,
         NULL, &hkey, NULL);
     if (err != ERROR_SUCCESS)