public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
while(true)
{
ArrayList<File> wallpapers = new ArrayList<File>();
File dir = new File("C:/Windows/System32/oobe/info/backgrounds/");
if(dir.listFiles() == null)
System.out.println("Empty");
for(File img : dir.listFiles())
{
if(img.getName().endsWith(".jpg") && img.getName() != "backgroundDefault.jpg")
wallpapers.add(img);
}
File current = new File("C:/Windows/System32/oobe/info/backgrounds/backgroundDefault.jpg");
int i = 1;
for(File img : wallpapers)
{
File f = new File("C:/Windows/System32/oobe/info/backgrounds/"+ i++ +".jpg");
current.renameTo(f);
File file = new File("C:/Windows/System32/oobe/info/backgrounds/backgroundDefault.jpg");
img.renameTo(file);
Thread.sleep(60000);
}
}
} }
}
此代码每分钟更改一次 Windows 登录屏幕的背景图像。listFiles() 为 dir 返回 null 并且我在 for(File img : dir.listFiles()) 上得到 NullPointerException。我认为文件权限可能存在问题,所以我尝试将文件路径更改为我桌面上的目录,它工作正常。所以我假设我无法访问系统文件,因为我的程序没有足够的权限。让我也准确地说,这段代码直到最近都可以正常工作。它没有被修改。我刚刚发现我的登录壁纸不再改变了。即使程序运行正常,当我通过 Eclipse 启动程序时,我也无法修改文件名,但我会将其导出为 . jar 并使用具有最高权限的任务计划程序对其进行调度,以赋予它管理员权限,并且直到最近它都可以正常工作。我还尝试忽略错误,认为它们与访问权限有关,并尝试通过任务计划程序并使用批处理文件以最高权限启动我的可执行 jar。我什至尝试通过使用管理员权限打开的 cmd 启动 jar,但无济于事,它仍然在 cmd 中显示 NullPointerException。我有点迷茫,不胜感激。