import java.applet.*; import java.util.*; import java.io.*; import java.net.*; import netscape.security.PrivilegeManager; public class UserInfoApplet extends Applet { // URL where this applet will be hosted public final String urlSource="http://www.javaworld.com/jw-10-1998/apptowin32/"; public final String dllFileName="userinfo.dll"; String dllDest; public final String jniClassName="UserInfo.class"; // UserInfo info; public void installDLL ( ) { try { PrivilegeManager.enablePrivilege("UniversalFileAccess"); } catch (Exception e) { System.out.println ("Can't enable file Privilege!!!"); e.printStackTrace(); } dllDest = findTempDir() + "userinfo.dll"; System.out.println("Copying " + urlSource + dllFileName + " to " + dllDest + " . . . " ); copyURL ( urlSource + dllFileName, dllDest ); } public void installJniWrapperClass ( ) { try { PrivilegeManager.enablePrivilege("UniversalFileAccess"); } catch (Exception e) { System.out.println ("Can't enable file Privilege!!!"); e.printStackTrace(); } System.out.println ("copying " + urlSource+jniClassName + " to " + parseClassPath()+jniClassName); copyURL (urlSource+jniClassName, parseClassPath()+jniClassName); } public void loadLibrary () { try { System.out.println("asking for link privilege . . . "); PrivilegeManager.enablePrivilege("UniversalLinkAccess"); } catch (Exception e) { System.out.println ("Can't enable link Privilege!!!"); e.printStackTrace(); } try { System.load ( dllDest ); System.out.println ("library loaded . . ."); } catch (Exception e) { System.out.println ("Can't load library!!!"); e.printStackTrace(); } catch (Error err) { System.out.println ("ERROR: Can't load library!!!"); err.printStackTrace(); } System.out.println ("Creating instance of JNI wrapper class from hard drive"); // info = new UserInfo (); } public String getUserName() { String name; // we can't reference UserInfo class until AFTER it exists on // local classpath! UserInfo info = new UserInfo(); try { PrivilegeManager.enablePrivilege("UniversalLinkAccess"); } catch (Exception e) { System.out.println ("Can't enable link Privilege!!!"); e.printStackTrace(); } try { name = info.getUserName(); } catch (Error er) { er.printStackTrace(); return ("Java Error on getUserName!") ; } return name; } public String getComputerName() { String name; // we can't reference UserInfo class until AFTER it exists on // local classpath! UserInfo info = new UserInfo(); try { PrivilegeManager.enablePrivilege("UniversalLinkAccess"); } catch (Exception e) { System.out.println ("Can't enable link Privilege!!!"); e.printStackTrace(); } try { name = info.getComputerName(); } catch (Error e) { e.printStackTrace(); return "Java Exception on getComputerName!"; } return name; } private String parseClassPath () { String destString = ""; try { PrivilegeManager.enablePrivilege("UniversalPropertyRead"); } catch (Exception e) { System.out.println ("Can't enable file Privilege!!!"); e.printStackTrace(); } String classPath = System.getProperty("java.class.path"); String pathSeparator = System.getProperty("path.separator"); String fileSeparator = System.getProperty("file.separator"); // test search string--debug String searchString = "java" + fileSeparator + "classes"; StringTokenizer sTok = new StringTokenizer ( classPath, pathSeparator); // find dir ending with "java/classes" or "java\classes" depending on sys while (sTok.hasMoreElements()) { destString = sTok.nextToken() ; if ( destString.endsWith(searchString) ) break; } return (destString + fileSeparator); } private String findTempDir () { // look in order c:\temp, c:\tmp; else just use c: String path1 = "C:\\temp"; File f = new File (path1); if (f.exists()) return path1; String path2 = "C:\\Temp"; f = new File (path2); if (f.exists()) return path2; String path3 = "C:\\Tmp"; f = new File (path3); if (f.exists()) return path3; String path4 = "C:\\tmp"; f = new File (path4); if (f.exists()) return path4; return "C:"; } private void removeFile (String pathName) { File f = new File(pathName); f.delete(); } private void copyURL(String srcURL, String destFile) { try { PrivilegeManager.enablePrivilege("UniversalConnect"); } catch (Exception e) { System.out.println ("Can't enable file Privilege!!!"); e.printStackTrace(); } try { PrivilegeManager.enablePrivilege("UniversalFileAccess"); } catch (Exception e) { System.out.println ("Can't enable file Privilege!!!"); e.printStackTrace(); } try { URL url = new URL(srcURL); System.out.println("Opening connection to " + srcURL + "..."); URLConnection urlC = url.openConnection(); System.out.println("url.openStream . . ."); InputStream is = url.openStream(); System.out.print("Copying resource (type: " + urlC.getContentType()); Date date=new Date(urlC.getLastModified()); System.out.println(", modified on: " + date.toLocaleString() + ")..."); System.out.flush(); FileOutputStream fos=null; fos = new FileOutputStream( new File(destFile) ); int oneChar, count=0; while ((oneChar=is.read()) != -1) { fos.write(oneChar); count++; } is.close(); fos.close(); System.out.println(count + " byte(s) copied"); } catch (MalformedURLException e) { System.err.println(e.toString()); } catch (IOException e) { System.err.println(e.toString()); e.printStackTrace(); } } }