A txt file if the previous mail format is bad. Forget to attach with
previous mail.

On Tue, Oct 23, 2012 at 3:52 PM, Sean Chou <zho...@linux.vnet.ibm.com> wrote:
> Hi Alan,
>
>     I did some search and wrote a brief, hope it helps.
>
> =====================================
>
> A brief about home directory, user profile directory, and "My
> Documents" directory of windows users.
>
> In windows NT and early, there is an assigned home directory act as a
> user's default folder to "Open and Save files"[1]. It is represented
> by environment variable "HOME", "HOMEDRIVE", "HOMEPATH". And this is
> still available in windows 7, a home directory can still be assigned
> to a user and %HOME% will report the assigned directory[7]. By
> default, HOME is set to profile directory which is "C:\Users\username"
> in vista and 7, and "C:\Documents and Settings\username" in XP(cmd ->
> set HOME).
>
> In windows 2000 and XP, "My Documents" directory is used to keep the
> user data which was kept in user home[1]. In the ways how programs
> treat "HOME" and "My Documents", it says "In other programs, the home
> folder is ignored, regardless of whether the home folder contains any
> files." This is a proof that the HOME directory is not encouraged to
> use any more. But it is still there. In windows Vista and 7, "My
> Documents" directory is becoming a virtual directory, it is seen from
> constant CSIDL_MYDOCUMENTS. It was CSIDL_PERSONAL in XP which is a
> real directory[4].
>
> Since windows XP, there is a user profile directory[2, 3]. It is
> default to "C:\Documents and Settings\username" in XP and
> "C:\Users\username" in vista and 7. User profile directory is
> available as environment variable "USERPROFILE"; it is available in
> Java by System.getenv("USERPROFILE"). USERPROFILE can be modified by
> resetting the variable. And it is available through shell function
> SHGetFolderLocation which is NOT affected by resetting the
> "USERPROFILE " variable.
>
> "Shell Folders" and shell functions
> This is totally from this artical[5]. "Shell Folders" registry key is
> a mistake in windows 95. When "roaming profile" is considered, it is
> decided to use function "SHGetSpecialFolderLocation" to get the
> folders represented in "Shell Folders". However, the key is kept as a
> shadow. And function SHGetFolderLocation is suggest to replace
> function SHGetSpecialFolderLocation in XP[6].
> So, the home directory reported by registry is a shadow of the value
> from shell API, I think the difference is caused by missed update.
> Detail to Java's implementation, there might be another difference:
> windows supports changing the location of "Desktop" directory, and
> Java takes the parent of "Desktop" from registry, this is not tested.
> The "USERPROFILE" is an environment variable which is set to the
> profile directory report by shell API, but it can be reset.
>
> Applications' default paths
> "cmd" is using profile directory as default path even "HOME" is set to
> other directory. Login through telnet will use "HOME" directory as the
> default, but Java is not using this "HOME" as user.home, it still uses
> the profile shadow in registry. But I don't have an environment to
> test domain users. I think the shell function mentions roaming
> profile, it should handle.
>
>
> [1] 
> http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lsm_homedir.mspx?mfr=true
> [2] 
> http://msdn.microsoft.com/en-us/library/windows/desktop/bb776896(v=vs.85).aspx
> [3] Shell contant CSIDL_PROFILE is available from version5.0 which is
> windows 2000 or ME. So the profile directory might be available since
> windows 2000 before XP.
> [4] 
> http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494(v=vs.85).aspx
> [5] http://blogs.msdn.com/b/oldnewthing/archive/2003/11/03/55532.aspx
> [6] 
> http://msdn.microsoft.com/en-us/library/windows/desktop/bb762203(v=vs.85).aspx
> [7] 
> http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lsm_profile_homedirectory.mspx?mfr=true
>
> ============================================================
>
> So in my understanding, the "HOME" directory is obsolete since XP, and
> "My Documents" is a substitution. And the important thing is, the
> directory represented by "HOME" is not a user's home compared with
> Unix. User's home contains application data, user data, Desktop and
> others. In windows, the USERPROFILE directory is much more similar to
> act as a user home. And the current implementation is using the user
> profile directory(the parent directory of Desktop, which is the
> profile directory by default settings).
>
> About the modified in webrev, I think it is just removing an old hack
> which is obsoleted since win95.
>
>
> On Fri, Oct 19, 2012 at 5:51 PM, Alan Bateman <alan.bate...@oracle.com> wrote:
>> On 19/10/2012 10:11, Sean Chou wrote:
>>>
>>> Hi all,
>>>
>>>      This is a fix for 651912. The fix removed the code to read
>>> user.home from registry and get profile directory instead of the
>>> parent of desktop directory. As suggested in
>>> http://blogs.msdn.com/b/oldnewthing/archive/2003/11/03/55532.aspx from
>>> the bug page.
>>>
>>> Bug: bugs.sun.com/bugdatabase/view_bug.do?bug_id=6519127
>>>
>>> Webrev: http://cr.openjdk.java.net/~zhouyx/6519127/webrev.00/
>>>
>>> Please take a look.
>>>
>> Sean - any changes to the value of user.home has the potential to cause
>> issues, this is an area whether there has been a lot of ambiguity in past as
>> to where the user's home directory is, particularly with non-standard
>> configurations. 6519127 and several others have been waiting for a brave
>> person to re-examine this issue.
>>
>> Do you think you could provide a detailed write-up on this topic? I think we
>> need to understand how the home directory, as reported by the shell API,
>> might differ to the value that the registry reports, also USERPROFILE. In
>> addition we've had so many issues over the years with different
>> configurations, Windows Terminal Server, local accounts vs. accounts in the
>> domain, etc. and I think we need to understand as much as possible as what
>> might change. Sorry there is lot more work here than you might have expected
>> but this is an area where we have to be very careful.
>>
>> -Alan
>
>
>
> --
> Best Regards,
> Sean Chou



-- 
Best Regards,
Sean Chou
A brief about home directory, user profile directory, and "My Documents" 
directory of windows users.

In windows NT and early, there is an assigned home directory act as a user's 
default folder to "Open and Save files"[1]. It is represented by environment 
variable "HOME", "HOMEDRIVE", "HOMEPATH". And this is still available in 
windows 7, a home directory can still be assigned to a user and %HOME% will 
report the assigned directory[7]. By default, HOME is set to profile directory 
which is "C:\Users\username" in vista and 7, and "C:\Documents and 
Settings\username" in XP(cmd -> set HOME).

In windows 2000 and XP, "My Documents" directory is used to keep the user data 
which was kept in user home[1]. In the ways how programs treat "HOME" and "My 
Documents", it says "In other programs, the home folder is ignored, regardless 
of whether the home folder contains any files." This is a proof that the HOME 
directory is not encouraged to use any more. But it is still there. In windows 
Vista and 7, "My Documents" directory is becoming a virtual directory, it is 
seen from constant CSIDL_MYDOCUMENTS. It was CSIDL_PERSONAL in XP which is a 
real directory[4].

Since windows XP, there is a user profile directory[2, 3]. It is default to 
"C:\Documents and Settings\username" in XP and "C:\Users\username" in vista and 
7. User profile directory is available as environment variable "USERPROFILE"; 
it is available in Java by System.getenv("USERPROFILE"). USERPROFILE can be 
modified by resetting the variable. And it is available through shell function 
SHGetFolderLocation which is NOT affected by resetting the variable.

"Shell Folders" and shell functions
This is totally from this artical[5]. "Shell Folders" registry key is a mistake 
in windows 95. When "roaming profile" is considered, it is decided to use 
function "SHGetSpecialFolderLocation" to get the folders represented in "Shell 
Folders". However, the key is kept as a shadow. And function 
SHGetFolderLocation is suggest to replace function SHGetSpecialFolderLocation 
in XP[6].
So, the home directory reported by registry is a shadow of the value from shell 
API, I think the difference is caused by missed update. Detail to Java's 
implementation, there might be another difference: windows supports changing 
the location of "Desktop" directory, and Java takes the parent of "Desktop" 
from registry, this is not tested. The "USERPROFILE" is an environment variable 
which is set to the profile directory report by shell API, but it can be reset.

Applications' default paths
"cmd" is using profile directory as default path even "HOME" is set to other 
directory. Login through telnet will use "HOME" directory as the default, but 
Java is not using this "HOME" as user.home, it still uses the profile shadow in 
registry. But I don't have an environment to test domain users. I think the 
shell function mentions roaming profile, it should handle.


[1] 
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lsm_homedir.mspx?mfr=true
[2] 
http://msdn.microsoft.com/en-us/library/windows/desktop/bb776896(v=vs.85).aspx
[3] Shell contant CSIDL_PROFILE is available from version5.0 which is windows 
2000 or ME. So the profile directory might be available since windows 2000 
before XP.
[4] 
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494(v=vs.85).aspx
[5] http://blogs.msdn.com/b/oldnewthing/archive/2003/11/03/55532.aspx
[6] 
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762203(v=vs.85).aspx
[7] 
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lsm_profile_homedirectory.mspx?mfr=true

============================================================

So in my understanding, the "HOME" directory is obsolete since XP, and "My 
Documents" is a substitution. And the important thing is, the directory 
represented by "HOME" is not a user's home compared with Unix. User's home 
contains application data, user data, Desktop and others. In windows, the 
USERPROFILE directory is much more similar to act as a user home. And the 
current implementation is using the USERPROFILE directory(the parent directory 
of Desktop, which is the profile directory by default settings).
About the modified in webrev, it is just removing an old hack which is 
obsoleted since win95.



Reply via email to