webForumDet fria alternativet

Få reda på vart systemfilerna finns

Java

2 svar · 377 visningar · startad av nissea

Medlem sedan juni 20074 inlägg
Frågan#1

Hej

Jag har skapat en JApplet som kräver att vissa dll-filer läggs in i system/system32 mappen för windows. Jag tror att man på något sätt skall kunna få reda på i vilken katalog systemfilerna ligger eftersom jag inte vill hårdkoda vart filerna skall kopieras. Tror att det finns något kommando i Java som man kan använda för att kontrollera vart operativsystemets systemfiler ligger, någon som vet hur man kan tänkas lösa detta? Väldigt tacksam för svar.

//Nisse

Medlem sedan sep. 2001961 inlägg
#2

nissea skrev:

Hej

Jag har skapat en JApplet som kräver att vissa dll-filer läggs in i system/system32 mappen för windows. Jag tror att man på något sätt skall kunna få reda på i vilken katalog systemfilerna ligger eftersom jag inte vill hårdkoda vart filerna skall kopieras. Tror att det finns något kommando i Java som man kan använda för att kontrollera vart operativsystemets systemfiler ligger, någon som vet hur man kan tänkas lösa detta? Väldigt tacksam för svar.

//Nisse

Hehe... du har lite mer problem än så... ;)

En applet har väldigt begränsade möjligheter att interagera med operativsystemet. De systemparametrar som man kan läsa upp i en applet är följande: (klippt från http://java.sun.com/docs/books/tutorial/deployment/applet/properties.html)

"file.separator" File separator (for example, "/")
"java.class.version" Java class version number
"java.vendor" Java vendor-specific string
"java.vendor.url" Java vendor URL
"java.version" Java version number
"line.separator" Line separator
"os.arch" Operating system architecture
"os.name" Operating system name
"path.separator" Path separator (for example, ":")

Följande lilla fulhack listar alla de system-properties som du kan använda dig av:

import java.util.Enumeration;
import java.util.Properties;

public class PropViewer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Properties sysProperties = System.getProperties();
		
		Enumeration sysKeys = sysProperties.keys();
		
		while (sysKeys.hasMoreElements()) {
			String key = (String) sysKeys.nextElement();
			String value = sysProperties.getProperty(key);
			
			System.out.println(key + ":\t" + value);
		}
	}
}

Sedan anser jag att du bör undvika att skriva operativsystemberoende kod i java... men det är jag det.

Medlem sedan juni 20008 205 inlägg
#3

Om man verkligen, verkligen, verkligen måste använda JNI i någon nätverksdeployad applikation är det smartare att använda typ Java Web Start, som faktiskt har stöd för det.

265 ms totalt · 4 externa anrop · v20260731065814-full.d8c17768
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)