Пробовал разные способы, например через реестр:
String REG_ADD_CMD = "cmd /c reg add \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"AppName\" /d \"%PROGRAMFILES%\\AppPath\App.exe\" /t REG_SZ";
Runtime.getRuntime().exec(REG_ADD_CMD);
Работает только под Windows XP. В Windows 8 выдает ошибку доступа.
Есть ли рабочие способы по кнопке добавить и удалить себя из автозагрузки?
UPD: выкладываю функцию-решение, может кому пригодитьсяpublic void setStartup(boolean startup) {
		if (System.getProperty("os.name").toLowerCase().indexOf("mac") >= 0) {
			// автозапуск для Mac OS X
			String plist_text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
			plist_text += "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDsPropertyList-1.0.dtd\">\n";
			plist_text += "<plist version=\"1.0\">\n";
			plist_text += "	<dict>\n";
			plist_text += "		<key>Label</key>\n";
			plist_text += "		<string>ru.sp.MySquperApp</string>\n";
			plist_text += "		<key>ProgramArguments</key>\n";
			plist_text += "		<array>\n";
			plist_text += "			<string>/usr/bin/open</string>\n";
			plist_text += "			<string>/Applications/ChatMySquperApp</string>\n";
			plist_text += "		</array>\n";
			plist_text += "		<key>RunAtLoad</key>\n";
			plist_text += "		<true/>\n";
			plist_text += "	</dict>\n";
			plist_text += "</plist>";
			File plist = new File(System.getProperty("user.home")
					+ "/Library/LaunchAgents/ru.sp.MySquperApp.plist");
			if (startup) {
				FileWriter writeFile = null;
				try {
					writeFile = new FileWriter(plist);
					writeFile.write(plist_text);
				} catch (IOException e) {
					log.fatal(e);
				} finally {
					if (writeFile != null) {
						try {
							writeFile.close();
						} catch (IOException e) {
							log.fatal(e);
						}
					}
				}
			} else {
				if (plist.exists()) {
					plist.delete();
				}
			}
		}else{
			// для виндовса
			String s = "";;
			if(startup){
				s = "cmd /C reg add HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v " +
				         "MySquperApp /t REG_SZ /d \"%PROGRAMFILES%\\MySquperApp\\MySquperApp.lnk\" /f";
			}else{
				s = "cmd /C reg delete HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run " +
				        "/v MySquperApp /f\r\n";
			}
			try {
				Runtime.getRuntime().exec(s);
			} catch (IOException e) {
				log.fatal(e,e);
			}
		}
	}