Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4448660

Windows: System.getProperty("user.name") method returns value of USERNAME enviro

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: P3 P3
    • None
    • 1.3.0
    • core-libs
    • None
    • x86
    • windows_nt



      Name: omR10185 Date: 04/20/2001


      System.getProperty("user.name") method returns value of USERNAME environment variable instead of real account name in WinNT.

      To reproduce try the following easy "Java" program and test script:

      Log in WinNT, for example as user "mov", run "Command prompt" (E:\WINNT\system32\cmd.exe) and execute the following:

      E:\tmp\test>type username.java
      public class username{

              public static void main(String args[]) {

                      String user = null;
                      try {
                              user = System.getProperty("user.name");
                              if (user == null) {
                                      System.out.println("System.getProperty(\"user.name\") returns: NULL");
                              } else {
                                      System.out.println("System.getProperty(\"user.name\") returns: " + user);
                              }
                      } catch (Exception e) {
                              // error
                              System.out.println(e.toString());
                      }
              }
      }
      E:\tmp\test>echo %USERNAME%
      mov

      E:\tmp\test>j:/ld25/java/dest/jdk1.3/win32/bin/java username
      System.getProperty("user.name") returns: mov

      E:\tmp\test>set USERNAME=mmm

      E:\tmp\test>j:/ld25/java/dest/jdk1.3/win32/bin/java username
      System.getProperty("user.name") returns: mmm

      E:\tmp\test>set USERNAME=

      E:\tmp\test>j:/ld25/java/dest/jdk1.3/win32/bin/java username
      System.getProperty("user.name") returns: mov


      On Solaris this method has another (I think correct) behavior.

      $ set | grep USER
      DTUSERSESSION=mov-novo118-0
      USER=mov

      $ /export/ld25/java/dest/jdk1.3/solaris/bin/java username
      System.getProperty("user.name") returns: mov

      $ export USER=mmm

      $ export USERNAME=mmm

      $ set | grep USER
      DTUSERSESSION=mov-novo118-0
      USER=mmm
      USERNAME=mmm

      $ /export/ld25/java/dest/jdk1.3/solaris/bin/java username
      System.getProperty("user.name") returns: mov

      So if user or somebody else erroneously set USERNAME variable to incorrect value "Java" application get it.

      We work in TeamWare development team. It's impossible to provide cross platform compatibility for our applications. Nobody can guarantee the same behavior on Windows and Solaris platforms.
      ======================================================================

            kkladkosunw Konstantin Kladko (Inactive)
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: