[vbox-dev] Location of VirtualBox configuration file
Malcolm Clarke
Malcolm.Clarke at brunel.ac.uk
Sun Nov 20 18:55:27 UTC 2016
Dear Max
Still no response.
Looking at path-win.cpp, the following code is unclear
RTDECL(int) RTPathUserHome(char *pszPath, size_t cchPath)
{
/*
* Validate input
*/
AssertPtrReturn(pszPath, VERR_INVALID_POINTER);
AssertReturn(cchPath, VERR_INVALID_PARAMETER);
RTUTF16 wszPath[RTPATH_MAX];
bool fValidFolderPath = false;
/*
* Try with Windows XP+ functionality first.
*/
RTLDRMOD hShell32;
int rc = RTLdrLoadSystem("Shell32.dll", true /*fNoUnload*/, &hShell32);
if (RT_SUCCESS(rc))
{
PFNSHGETFOLDERPATHW pfnSHGetFolderPathW;
rc = RTLdrGetSymbol(hShell32, "SHGetFolderPathW", (void**)&pfnSHGetFolderPathW);
if (RT_SUCCESS(rc))
{
HRESULT hrc = pfnSHGetFolderPathW(0, CSIDL_PROFILE, NULL, SHGFP_TYPE_CURRENT, wszPath);
fValidFolderPath = (hrc == S_OK);
}
RTLdrClose(hShell32);
}
DWORD dwAttr;
if ( !fValidFolderPath
|| (dwAttr = GetFileAttributesW(&wszPath[0])) == INVALID_FILE_ATTRIBUTES
|| !(dwAttr & FILE_ATTRIBUTE_DIRECTORY))
{
/*
* Fall back to Windows specific environment variables. HOME is not used.
*/
if ( !GetEnvironmentVariableW(L"USERPROFILE", &wszPath[0], RTPATH_MAX)
|| (dwAttr = GetFileAttributesW(&wszPath[0])) == INVALID_FILE_ATTRIBUTES
|| !(dwAttr & FILE_ATTRIBUTE_DIRECTORY))
{
/* %HOMEDRIVE%%HOMEPATH% */
if (!GetEnvironmentVariableW(L"HOMEDRIVE", &wszPath[0], RTPATH_MAX))
return VERR_PATH_NOT_FOUND;
size_t const cwc = RTUtf16Len(&wszPath[0]);
if ( !GetEnvironmentVariableW(L"HOMEPATH", &wszPath[cwc], RTPATH_MAX - (DWORD)cwc)
|| (dwAttr = GetFileAttributesW(&wszPath[0])) == INVALID_FILE_ATTRIBUTES
|| !(dwAttr & FILE_ATTRIBUTE_DIRECTORY))
return VERR_PATH_NOT_FOUND;
}
}
Assuming this falls through to get the environment variable, then USERPROFILE is used over %HOMEDRIVE%%HOMEPATH%, however in most other places %HOMEDRIVE%%HOMEPATH% alone is used. This appears to result in inconsistent behaviour if USERPROFILE is not equal to %HOMEDRIVE%%HOMEPATH%.
This needs to be remedied for people using roaming profiles when these environmental variables can be set differently.
1. %HOMEDRIVE%%HOMEPATH% is used for location of configuration files (create and check location for existence)
2. USERPROFILE may be used for temporary files
Regards
Malcolm
On 09/11/2016 14:36, Maxime Dor wrote:
Hi Malcolm,
While I have extensive knowledge of VBox, I'm not a dev so I can't really answer that question, only the devs can.
They should answer anytime soon now! If they don't be tomorrow, just let me know and I'll drop them a note.
Max
--
Malcolm Clarke BSc (Hons), PhD
Reader in Telemedicine and Data Communication Systems
T +44 (0) 1895 265053
Brunel University London
College of Engineering, Design and Physical Sciences
Department of Computer Science
HNZW010, Heinz Wolff Building, Kingston Lane, Uxbridge, Middlesex, UB8 3PH
www.brunel.ac.uk<http://www.brunel.ac.uk/>
Connect with the university on Linkedin, Twitter, Facebook
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20161120/0ccb15be/attachment-0001.html>
More information about the vbox-dev
mailing list