2

我正在努力写入所有用户的快捷方式目录,并且我相信它可以正常工作,但是我获取路径的方式似乎不正确。而且我不知道这是否是检查所有用户路径是否存在的正确方法,或者是否有更好的方法。这应该能够在 windows xp - windows 8 和 windows server 2000 - 2012 上工作。这是代码:

        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";
        }

更新:做一些研究我发现你可以执行命令行查询。

 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" +"\"";

现在这将使我进入当前用户的程序文件夹:示例“C:\Documents and Settings\al\Start Menu\Programs”或“E:\Documents and Settings\meg\Start Menu\Programs”有没有办法我可以切片吗?至少获得“?:\文档和设置\”?这样我至少可以将它添加到所有用户中,而不仅仅是当前用户。这样,猜测工作会更少,效果会更好。谢谢

4

2 回答 2

0

在其他语言的系统上,您需要更多。

一种策略是使用当前用户的信息来获取所有用户的目录。

系统信息可以从:

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

不幸System.getProperty("user.home")的是,只有可能感兴趣。使用该目录,您可以解释所有用户目录。

java.awt.Desktop 也是如此,JDIC 库可能值得研究。

于 2012-11-26T15:00:18.543 回答
-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:”作为先验的系统驱动器。

于 2012-11-26T14:39:06.273 回答