System.getenv("USERDNSDOMAIN") liefert immer null

StehtimSchilf

Erfahrenes Mitglied
Hi Forum

ich benötige auf einem W2K8 R2 64bit mit Java 1.7.0.25 Rechner den Domain Namen. Ergo lass' ich mir den ausspucken mit:

Code:
System.getenv("USERDNSDOMAIN")

Doch dies liefert mir immer null. Die Umgebungsvariablen USERDOMAIN, USERPROFILE, USERNAME, COMPUTERNAME, TEMP, PATH etc. funktionieren problemlos - wieso aber USERDNSDOMAIN nicht?

Wenn ich mir in alle Umgebungsvariablen im Command Prompt ausgeben lasse, so seh' ich, dass USERDNSDOMAIN gesetzt ist.

Auf meinem Entwicklungsrechner mit Windows 7 kann ich problemlos diese Variable auslesen.

Ideen?
Cheerioh
SiS
 

saftmeister

Nutze den Saft!
Kann es nicht testen, da ich kein Windows 8 habe, aber versuch es doch mal damit:

Java:
package domainname;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class GetDomainName
{
  private String getEnv(String env)
  {
    String line = "";
    try
    {
      Process p = Runtime.getRuntime().exec("cmd /c echo %"+env+"%");
      BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
      String l;
      while((l = br.readLine())  != null )
      {
        line += l;
      }
    }
    catch (IOException e)
    {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return line;
  }

  public static void main(String[] args)
  {
    GetDomainName gdn = new GetDomainName();

    System.out.println(gdn.getEnv("USERDOMAIN"));
  }
}
 

StehtimSchilf

Erfahrenes Mitglied
Hallo zusammen.

ich habe nun die Ursache gefunden. Wenn ich mir eine einfach Test-Klasse erstelle und in der Console ausführe, so klappt dies bei mir auch auf Win2k8 R2. Nur, bei mir läuft die ganze Geschichte als Windows Service mit der Ausführberechtigung "Local System Account". So erhalt ich bei mir immer null. Ändere ich die Ausführberechtigung bspw. auf den Administrator, so klappts...

Scheint also so zu sein, dass der "Local Service"-Account keine gesetzte "USERDNSDOMAIN"-Umgebungsvariable hat.

Jemand eine Idee, wie ich die dort reinbekomme?

cheerioh
SiS