2012-11-26 2 views
2

모든 사용자의 바로 가기 디렉토리에 글을 쓰고 있습니다. 제대로 작동하지 않지만 경로가 제대로 표시되지 않습니다. 그리고 모든 사용자 경로가 있는지 또는 더 나은 방법이 있는지를 확인하는 올바른 방법인지는 확실하지 않습니다. - 2000 윈도우 8과 윈도우 서버에서 - 이것은 Windows XP에서 작동 할 수 있도록 가정되는 2012 년 다음은 코드입니다 :Java - Windows의 모든 사용자에게 경로를 가져 오는 중

 int pathOne = 0; 
     int pathTwo = 0; 
     String allUserPath = ""; 

     File sourceOne = new File("C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\"); 
     if (sourceOne.exists()) 
     { 
      pathOne = 1; 
     } 

     File sourceTwo = new File("C:\\Documents and Settings\\All Users\\Start Menu\\"); 
     if (sourceTwo.exists()) 
     { 
      pathTwo = 1; 
     } 

     if (pathOne == 1 && pathTwo == 0) 
     { 
     allUserPath = "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs"; 
     } 

     if (pathTwo == 1 && pathOne== 0) 
     { 
     allUserPath = "C:\\Documents and Settings\\All Users\\Start Menu\\Programs"; 
     } 

업데이트 : 난 당신이 명령 줄을 실행할 수 있다는 것을 발견 몇 가지 조사를하는 querys. 예 "C : 프로그램 \ \ 문서 및 설정 \ 알 \ 시작 메뉴"또는 "E : \ 문서 및 설정 \ 메가 \ 시작 메뉴를

public static final String REG_QRY_CMD="reg query "; 
public static final String SHORT_CUT_REG_KEY="HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"; 

String str = REG_QRY_CMD+"\""+ 
      SHORT_CUT_REG_KEY+"\""+ " /v " + "\""+ "Programs" +"\""; 

지금 이것은 현재 사용자의 프로그램 폴더로 나를 얻을 것이다 \ 프로그램 "나는 이것을 조각 수있는 방법이 있습니까? 최소한 at : \ Documents and Settings \를 얻으시겠습니까? 그렇게하면 현재 사용자가 아닌 모든 사용자에게 추가 할 수 있습니다. 이렇게하면 추측이 덜되고 약간 개선 될 것입니다. 감사합니다

+0

* "Windows의 모든 사용자에게 경로 가져 오기"* 앱에는 무엇이 있습니까? OS X & * nix의 모든 사용자를 위해? –

+0

이것은 단지 현재 사용자 대 모든 사용자에게 바로 가기를 추가하기위한 것입니다. –

+2

설치 프로그램을 작성 하시겠습니까? 제발하지 마세요 (특히 자바에 쓰는 경우는 Windows 용입니다!). ** 많은 설치 관리자가 ** 있으며 그 중 일부는 무료입니다. Windows에는 해당 경로를 찾고 해당 경로가 어디에 있는지 Windows에 묻는 것 이외의 작업을 수행하는 데 필요한 * API가 있습니다. 새 버전, 다른 언어 버전의 Windows, 수정 된 경로가있는 사용자 지정 설치 및 다른 모든 종류의 (유효합니다.) 설치. –

답변

-1

당신은 처음부터 설치 프로그램을 사용해야합니다,하지만 당신은 그 코드에서 뭔가를 사용할 수 있습니다

FileSystemView fsv = FileSystemView.getFileSystemView(); 
    File[] roots = fsv.getRoots(); 
    for (int i = 0; i < roots.length; i++) 
    { 
    System.out.println("Root => " + roots[i]); 
    } 

이 루트 디렉토리 목록을 반환합니다.

또한 fsv.getHomeDirectory()를 사용할 수 있으며 Windows의 경우 "C : \ Documents and Settings \ daniel \ Desktop"을 반환해야합니다.

그럼에도 불구하고 "C :"를 시스템 드라이브 apriori로 사용하지 마십시오.

+0

나는 Cmd 쿼리를 사용하여 프로그램을 검색하는 것과 비슷한 것을 가지고 있으며 그 문제는 내가 현재 얻고 자하는 모든 사용자 대 현재 사용자에게 설치된다는 것입니다. –

-1

다른 언어로 된 시스템에서는 더 많이 필요합니다.

하나의 전략은 현재 사용자의 정보를 사용하여 모든 사용자 디렉토리를 가져 오는 것입니다.

System.getProperties().list(System.out); 

은 불행하게도에만 System.getProperty("user.home") 관심의 대상이 될 수 있습니다 :에서

시스템 정보를 가지고 할 수있다. 이 디렉토리를 사용하면 모든 사용자 디렉토리를 해석 할 수 있습니다.

java.awt.Desktop에서도 마찬가지이며 JDIC 라이브러리에서 살펴볼 가치가 있습니다.

+0

'System.getProperties(). list (System.out); 그리고'System.getProperty ("user.home")'로 가지고있는 것을 사용하려고 시도하고 있지만 사용자 정보를 제공하지는 않지만 나를 많이 갈. –

관련 문제