per-user-registry-20040320
[openafs.git] / src / WINNT / client_config / RegistrySupport.cpp
index cf87a18..50d26f0 100644 (file)
 
 BOOL Config_ReadString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax);
 
-extern TCHAR AFSConfigKeyName[] = TEXT("SYSTEM\\CurrentControlSet\\Services\\TransarcAFSDaemon\\Parameters");
+/*
+ * REGISTRY ___________________________________________________________________
+ *
+ */
+
+extern const TCHAR AFSDConfigKeyName[] = TEXT("SYSTEM\\CurrentControlSet\\Services\\TransarcAFSDaemon\\Parameters");
+extern const TCHAR AFSClientKeyName[] = TEXT("SOFTWARE\\OpenAFS\\Client");
 
 void Config_GetGlobalDriveList (DRIVEMAPLIST *pDriveList)
 {
@@ -35,7 +41,7 @@ void Config_GetGlobalDriveList (DRIVEMAPLIST *pDriveList)
 
    memset(pDriveList, 0, sizeof(DRIVEMAPLIST));
 
-   lstrcpy(szKeyName, AFSConfigKeyName);
+   lstrcpy(szKeyName, AFSDConfigKeyName);
    lstrcat(szKeyName, TEXT("\\GlobalAutoMapper"));
 
    dwResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, KEY_QUERY_VALUE, &hKey);
@@ -71,10 +77,10 @@ void Config_GetGlobalDriveList (DRIVEMAPLIST *pDriveList)
    RegCloseKey(hKey);
 }
 
-BOOL Config_ReadNum (LPCTSTR pszLHS, DWORD *pdwRHS)
+BOOL Config_ReadGlobalNum (LPCTSTR pszLHS, DWORD *pdwRHS)
 {
    HKEY hk;
-   if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
+   if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSDConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
       return FALSE;
 
    DWORD dwSize = sizeof(*pdwRHS);
@@ -89,11 +95,73 @@ BOOL Config_ReadNum (LPCTSTR pszLHS, DWORD *pdwRHS)
 }
 
 
-BOOL Config_ReadString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax)
+BOOL Config_ReadGlobalString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax)
+{
+   HKEY hk;
+   if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSDConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
+      return FALSE;
+
+   DWORD dwSize = sizeof(TCHAR) * cchMax;
+   if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pszRHS, &dwSize) != ERROR_SUCCESS)
+      {
+      RegCloseKey (hk);
+      return FALSE;
+      }
+
+   RegCloseKey (hk);
+   return TRUE;
+}
+
+
+void Config_WriteGlobalNum (LPCTSTR pszLHS, DWORD dwRHS)
+{
+   HKEY hk;
+   DWORD dwDisp;
+   if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSDConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
+      {
+      RegSetValueEx (hk, pszLHS, NULL, REG_DWORD, (PBYTE)&dwRHS, sizeof(dwRHS));
+      RegCloseKey (hk);
+      }
+}
+
+
+void Config_WriteGlobalString (LPCTSTR pszLHS, LPCTSTR pszRHS)
+{
+   HKEY hk;
+   DWORD dwDisp;
+   if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSDConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
+      {
+      RegSetValueEx (hk, pszLHS, NULL, REG_SZ, (PBYTE)pszRHS, sizeof(TCHAR) * (1+lstrlen(pszRHS)));
+      RegCloseKey (hk);
+      }
+}
+
+
+BOOL Config_ReadUserNum (LPCTSTR pszLHS, DWORD *pdwRHS)
 {
    HKEY hk;
-   if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
+    if (RegOpenKeyEx (HKEY_CURRENT_USER, AFSClientKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
+        if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSClientKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
+            return FALSE;
+
+   DWORD dwSize = sizeof(*pdwRHS);
+   if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pdwRHS, &dwSize) != ERROR_SUCCESS)
+      {
+      RegCloseKey (hk);
       return FALSE;
+      }
+
+   RegCloseKey (hk);
+   return TRUE;
+}
+
+
+BOOL Config_ReadUserString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax)
+{
+   HKEY hk;
+    if (RegOpenKeyEx (HKEY_CURRENT_USER, AFSClientKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
+        if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSClientKeyName, 0, KEY_QUERY_VALUE, &hk) != ERROR_SUCCESS)
+            return FALSE;
 
    DWORD dwSize = sizeof(TCHAR) * cchMax;
    if (RegQueryValueEx (hk, pszLHS, NULL, NULL, (PBYTE)pszRHS, &dwSize) != ERROR_SUCCESS)
@@ -107,11 +175,11 @@ BOOL Config_ReadString (LPCTSTR pszLHS, LPTSTR pszRHS, size_t cchMax)
 }
 
 
-void Config_WriteNum (LPCTSTR pszLHS, DWORD dwRHS)
+void Config_WriteUserNum (LPCTSTR pszLHS, DWORD dwRHS)
 {
    HKEY hk;
    DWORD dwDisp;
-   if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
+   if (RegCreateKeyEx (HKEY_CURRENT_USER, AFSClientKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
       {
       RegSetValueEx (hk, pszLHS, NULL, REG_DWORD, (PBYTE)&dwRHS, sizeof(dwRHS));
       RegCloseKey (hk);
@@ -119,14 +187,15 @@ void Config_WriteNum (LPCTSTR pszLHS, DWORD dwRHS)
 }
 
 
-void Config_WriteString (LPCTSTR pszLHS, LPCTSTR pszRHS)
+void Config_WriteUserString (LPCTSTR pszLHS, LPCTSTR pszRHS)
 {
    HKEY hk;
    DWORD dwDisp;
-   if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, AFSConfigKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
+   if (RegCreateKeyEx (HKEY_CURRENT_USER, AFSClientKeyName, 0, TEXT("container"), 0, KEY_SET_VALUE, NULL, &hk, &dwDisp) == ERROR_SUCCESS)
       {
       RegSetValueEx (hk, pszLHS, NULL, REG_SZ, (PBYTE)pszRHS, sizeof(TCHAR) * (1+lstrlen(pszRHS)));
       RegCloseKey (hk);
       }
 }
 
+