我正在写入所有用户的快捷方式目录,我认为它工作我相信,但我得到路径的方式似乎不对。而且我不知道检查所有用户路径是否存在或是否有更好的方法是否正确。这假设能够在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”有没有办法可以对此进行切片?至少得到“?:\ Documents and Settings”?这样我至少可以将其添加到所有用户而不仅仅是当前用户。通过这种方式,它可以减少猜测工作并且稍微好一点。谢谢
答案 0 :(得分:-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。
答案 1 :(得分:-1)
在其他语言的系统上,您需要更多。
一种策略是使用当前用户的信息来获取所有用户目录。
系统信息可以从以下网址获取:
System.getProperties().list(System.out);
不幸的是只有System.getProperty("user.home")
才有意义。使用该目录,您可以解释所有用户目录。
对于java.awt.Desktop也是如此,JDIC库可能值得研究。