Definir variáveis ​​de sistema do Windows com Java

Existe uma maneira de adicionar um diretório específico para o% system path% pATH% do Windows? Isso não parece funcionar:

String[] cmd = { "cmd", "/c", "set", "PATH=\"%PATH%;c:\\test\"" };
Runtime.getRuntime().exec( cmd );

c: \ test \ não aparece em System.getenv ("PATH"); ou na saída de

String[] cmd = { "cmd", "/c", "echo", "%PATH%" };
Runtime.getRuntime().exec( cmd );

O que eu preciso é modificar a variável% PATH% para o atual Java-Process no Windows. O motivo é que preciso carregar alguns arquivos dll nativos que fazem referência cruzada uns aos outros. Então, gostaria de adicionar o caminho do aplicativo ao ambiente do Windows.

A próxima coisa que eu tentei foi um pequeno JNI-Wrapper para o C-Function "putenv" que se parece com isso:

JNIEXPORT void JNICALL Java_com_splitscreen_AppletTest_PutEnv_putEnv
  (JNIEnv *env, jobject jobj, jstring val) {

    jboolean iscopy;

    const char *mvalue = (*env)->GetStringUTFChars(
                env, val, &iscopy);

    putenv(mvalue);
}

É assim que eu chamo isso:

final String curPath = System.getenv( "PATH" );
final PutEnv pe = new PutEnv();
pe.putEnv( "PATH=" + curPath + ";c:\test" );

final String newPath = System.getenv( "PATH" );
System.out.println( newPath );

Mas os pathes são iguais. Não tenho certeza se o Mapa do Ambiente do Sistema Java não está atualizado ou se o putenv não funcionou. Existe uma maneira de verificar isso?

questionAnswers(4)

yourAnswerToTheQuestion