diff --git a/reactos/lib/userenv/desktop.c b/reactos/lib/userenv/desktop.c index 0655be3c881..e6b260d11ac 100644 --- a/reactos/lib/userenv/desktop.c +++ b/reactos/lib/userenv/desktop.c @@ -1,4 +1,4 @@ -/* $Id: desktop.c,v 1.2 2004/05/01 11:55:01 ekohl Exp $ +/* $Id: desktop.c,v 1.3 2004/05/03 12:05:44 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -330,7 +330,7 @@ CreateGroupW (LPCWSTR lpGroupName, DPRINT ("Group path: '%S'\n", szGroupPath); /* FIXME: Create nested directories */ - if (!CreateDirectory (szGroupPath, NULL)) + if (!CreateDirectoryW (szGroupPath, NULL)) return FALSE; /* FIXME: Notify the shell */ @@ -340,4 +340,47 @@ CreateGroupW (LPCWSTR lpGroupName, return TRUE; } + +BOOL WINAPI +DeleteGroupA (LPCSTR lpGroupName, + BOOL bCommonGroup) +{ + DPRINT1 ("DeleteGroupA() not implemented!\n"); + return FALSE; +} + + +BOOL WINAPI +DeleteGroupW (LPCWSTR lpGroupName, + BOOL bCommonGroup) +{ + WCHAR szGroupPath[MAX_PATH]; + + DPRINT ("DeleteGroupW() called\n"); + + if (lpGroupName == NULL || *lpGroupName == 0) + return TRUE; + + if (!GetProgramsPath (bCommonGroup, szGroupPath)) + { + DPRINT1 ("GetProgramsPath() failed\n"); + return FALSE; + } + DPRINT ("Programs path: '%S'\n", szGroupPath); + + wcscat (szGroupPath, L"\\"); + wcscat (szGroupPath, lpGroupName); + DPRINT ("Group path: '%S'\n", szGroupPath); + + /* FIXME: Remove nested directories */ + if (!RemoveDirectoryW (szGroupPath)) + return FALSE; + + /* FIXME: Notify the shell */ + + DPRINT ("DeleteGroupW() done\n"); + + return TRUE; +} + /* EOF */ diff --git a/reactos/lib/userenv/profile.c b/reactos/lib/userenv/profile.c index d52872ecac8..6fd87d9c7d7 100644 --- a/reactos/lib/userenv/profile.c +++ b/reactos/lib/userenv/profile.c @@ -1,4 +1,4 @@ -/* $Id: profile.c,v 1.10 2004/04/29 14:41:26 ekohl Exp $ +/* $Id: profile.c,v 1.11 2004/05/03 12:05:44 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -301,6 +301,38 @@ CreateUserProfileW (PSID Sid, } +BOOL WINAPI +GetAllUsersProfileDirectoryA (LPSTR lpProfileDir, + LPDWORD lpcchSize) +{ + LPWSTR lpBuffer; + BOOL bResult; + + lpBuffer = GlobalAlloc (GMEM_FIXED, + *lpcchSize * sizeof(WCHAR)); + if (lpBuffer == NULL) + return FALSE; + + bResult = GetAllUsersProfileDirectoryW (lpBuffer, + lpcchSize); + if (bResult) + { + WideCharToMultiByte (CP_ACP, + 0, + lpBuffer, + -1, + lpProfileDir, + *lpcchSize, + NULL, + NULL); + } + + GlobalFree (lpBuffer); + + return bResult; +} + + BOOL WINAPI GetAllUsersProfileDirectoryW (LPWSTR lpProfileDir, LPDWORD lpcchSize) @@ -382,6 +414,38 @@ GetAllUsersProfileDirectoryW (LPWSTR lpProfileDir, } +BOOL WINAPI +GetDefaultUserProfileDirectoryA (LPSTR lpProfileDir, + LPDWORD lpcchSize) +{ + LPWSTR lpBuffer; + BOOL bResult; + + lpBuffer = GlobalAlloc (GMEM_FIXED, + *lpcchSize * sizeof(WCHAR)); + if (lpBuffer == NULL) + return FALSE; + + bResult = GetDefaultUserProfileDirectoryW (lpBuffer, + lpcchSize); + if (bResult) + { + WideCharToMultiByte (CP_ACP, + 0, + lpBuffer, + -1, + lpProfileDir, + *lpcchSize, + NULL, + NULL); + } + + GlobalFree (lpBuffer); + + return bResult; +} + + BOOL WINAPI GetDefaultUserProfileDirectoryW (LPWSTR lpProfileDir, LPDWORD lpcchSize) @@ -463,6 +527,38 @@ GetDefaultUserProfileDirectoryW (LPWSTR lpProfileDir, } +BOOL WINAPI +GetProfilesDirectoryA (LPSTR lpProfileDir, + LPDWORD lpcchSize) +{ + LPWSTR lpBuffer; + BOOL bResult; + + lpBuffer = GlobalAlloc (GMEM_FIXED, + *lpcchSize * sizeof(WCHAR)); + if (lpBuffer == NULL) + return FALSE; + + bResult = GetProfilesDirectoryW (lpBuffer, + lpcchSize); + if (bResult) + { + WideCharToMultiByte (CP_ACP, + 0, + lpBuffer, + -1, + lpProfileDir, + *lpcchSize, + NULL, + NULL); + } + + GlobalFree (lpBuffer); + + return bResult; +} + + BOOL WINAPI GetProfilesDirectoryW (LPWSTR lpProfilesDir, LPDWORD lpcchSize) @@ -526,6 +622,40 @@ GetProfilesDirectoryW (LPWSTR lpProfilesDir, } +BOOL WINAPI +GetUserProfileDirectoryA (HANDLE hToken, + LPSTR lpProfileDir, + LPDWORD lpcchSize) +{ + LPWSTR lpBuffer; + BOOL bResult; + + lpBuffer = GlobalAlloc (GMEM_FIXED, + *lpcchSize * sizeof(WCHAR)); + if (lpBuffer == NULL) + return FALSE; + + bResult = GetUserProfileDirectoryW (hToken, + lpBuffer, + lpcchSize); + if (bResult) + { + WideCharToMultiByte (CP_ACP, + 0, + lpBuffer, + -1, + lpProfileDir, + *lpcchSize, + NULL, + NULL); + } + + GlobalFree (lpBuffer); + + return bResult; +} + + BOOL WINAPI GetUserProfileDirectoryW (HANDLE hToken, LPWSTR lpProfileDir, diff --git a/reactos/lib/userenv/userenv.def b/reactos/lib/userenv/userenv.def index 544305f2aa2..0ae996935c2 100644 --- a/reactos/lib/userenv/userenv.def +++ b/reactos/lib/userenv/userenv.def @@ -3,6 +3,8 @@ EXPORTS InitializeProfiles@0 @100 NONAME CreateGroupA@8 @101 NONAME CreateGroupW@8 @102 NONAME +DeleteGroupA@8 @103 NONAME +DeleteGroupW@8 @104 NONAME CreateUserProfileA@8 @109 NONAME CreateUserProfileW@8 @110 NONAME AddDesktopItemA@32 @113 NONAME @@ -11,9 +13,13 @@ DeleteDesktopItemA@8 @115 NONAME DeleteDesktopItemW@8 @116 NONAME CreateEnvironmentBlock@12 DestroyEnvironmentBlock@4 +GetAllUsersProfileDirectoryA@8 GetAllUsersProfileDirectoryW@8 +GetDefaultUserProfileDirectoryA@8 GetDefaultUserProfileDirectoryW@8 +GetProfilesDirectoryA@8 GetProfilesDirectoryW@8 +GetUserProfileDirectoryA@12 GetUserProfileDirectoryW@12 LoadUserProfileA@8 LoadUserProfileW@8 diff --git a/reactos/lib/userenv/userenv.edf b/reactos/lib/userenv/userenv.edf index df109f85fe7..d812d7a8633 100644 --- a/reactos/lib/userenv/userenv.edf +++ b/reactos/lib/userenv/userenv.edf @@ -3,6 +3,8 @@ EXPORTS InitializeProfiles=InitializeProfiles@0 @100 NONAME CreateGroupA=CreateGroupA@8 @101 NONAME CreateGroupW=CreateGroupW@8 @102 NONAME +DeleteGroupA=DeleteGroupA@8 @103 NONAME +DeleteGroupW=DeleteGroupW@8 @104 NONAME CreateUserProfileA=CreateUserProfileA@8 @109 NONAME CreateUserProfileW=CreateUserProfileW@8 @110 NONAME AddDesktopItemA=AddDesktopItemA@32 @113 NONAME @@ -11,9 +13,13 @@ DeleteDesktopItemA=DeleteDesktopItemA@8 @115 NONAME DeleteDesktopItemW=DeleteDesktopItemW@8 @116 NONAME CreateEnvironmentBlock=CreateEnvironmentBlock@12 DestroyEnvironmentBlock=DestroyEnvironmentBlock@4 +GetAllUsersProfileDirectoryA=GetAllUsersProfileDirectoryA@8 GetAllUsersProfileDirectoryW=GetAllUsersProfileDirectoryW@8 +GetDefaultUserProfileDirectoryA=GetDefaultUserProfileDirectoryA@8 GetDefaultUserProfileDirectoryW=GetDefaultUserProfileDirectoryW@8 +GetProfilesDirectoryA=GetProfilesDirectoryA@8 GetProfilesDirectoryW=GetProfilesDirectoryW@8 +GetUserProfileDirectoryA=GetUserProfileDirectoryA@12 GetUserProfileDirectoryW=GetUserProfileDirectoryW@12 LoadUserProfileA=LoadUserProfileA@8 LoadUserProfileW=LoadUserProfileW@8 diff --git a/reactos/w32api/include/userenv.h b/reactos/w32api/include/userenv.h index d228d679d9a..7de9a8bcd36 100644 --- a/reactos/w32api/include/userenv.h +++ b/reactos/w32api/include/userenv.h @@ -46,6 +46,8 @@ BOOL WINAPI DeleteDesktopItemA (BOOL, LPCSTR); BOOL WINAPI DeleteDesktopItemW (BOOL, LPCWSTR); BOOL WINAPI CreateGroupA (LPCSTR, BOOL); BOOL WINAPI CreateGroupW (LPCWSTR, BOOL); +BOOL WINAPI DeleteGroupA (LPCSTR, BOOL); +BOOL WINAPI DeleteGroupW (LPCWSTR, BOOL); /* end private */ BOOL WINAPI LoadUserProfileA (HANDLE, LPPROFILEINFOA); BOOL WINAPI LoadUserProfileW (HANDLE, LPPROFILEINFOW); @@ -71,6 +73,7 @@ typedef LPPROFILEINFOW LPPROFILEINFO; #define AddDesktopItem AddDesktopItemW #define DeleteDesktopItem DeleteDesktopItemW #define CreateGroup CreateGroupW +#define DeleteGroup DeleteGroupW /* end private */ #define LoadUserProfile LoadUserProfileW #define GetAllUsersProfileDirectory GetAllUsersProfileDirectoryW @@ -85,6 +88,7 @@ typedef LPPROFILEINFOA LPPROFILEINFO; #define AddDesktopItem AddDesktopItemA #define DeleteDesktopItem DeleteDesktopItemA #define CreateGroup CreateGroupA +#define DeleteGroup DeleteGroupA /* end private */ #define LoadUserProfile LoadUserProfileA #define GetAllUsersProfileDirectory GetAllUsersProfileDirectoryA