Итак, я понимаю, что файлы не могут быть созданы или удалены без прав администратора на диске C:\. У меня такой вопрос: если каталог на диске C:\ введен ... скажем, Program Files, то нельзя ли там писать файлы?
Я создал программу, которая удаляет пустые каталоги во всей папке (т.е. включает в себя подпапки)
Я получаю, что диск C:\ требует разрешений, но как только моя программа обнаруживает, что Program Files является «непустым» каталогом, она входит в Program Files, но ей по-прежнему отказывают в разрешениях на запись. Я знаю это, потому что я удостоверился, что программа перечисляет каждый каталог, который она находит в данном пути Итак, КАЖДАЯ папка, присутствующая на диске C:\, печатается. Папки не удалены, хотя.
Принимая во внимание, что когда я устанавливаю путь непосредственно к C:\Program Files, он выполняет задачу удаления пустых каталогов согласно коду.
Почему это так?
Я написал командный файл, который я запустил как администратор. Как вы уже догадались, не повезло. Я попытался запустить его через cmd в режиме администратора, ничего больше. Есть ли способ, которым я могу изменить файл .class моего кода для запуска с правами администратора. Или есть способ запустить его в cmd с правами администратора. Сказать
java emptyFoldersRemover -runAsAdmin
Что-то вроде того?
Или мне нужно сделать исполняемый файл?
РЕДАКТИРОВАТЬ
Я снова подчеркиваю этот момент. Нет ли способа запустить java.exe с правами администратора в cmd, чтобы программа обрабатывалась с правами администратора?
String absolutePath=p;
try {
path=new File(absolutePath);
File listOfFolders[] = path.listFiles();
for(int i=0;i<listOfFolders.length;i++)
if(listOfFolders[i].isDirectory())
System.out.println(listOfFolders[i]);
for (int i = 0; i < listOfFolders.length; i++)
{
if (listOfFolders[i].isDirectory())
{
if(listOfFolders[i].list().length>0) {
/* if(listOfFolders[i].getName().equalsIgnoreCase("Program Files"))
{
for(int j=0;j<listOfFolders[i].list().length;j++)
{
System.out.println(listOfFolders[i].list());
}
}*/
run(listOfFolders[i].getAbsolutePath());
}
else
{
noOfFolders++;
System.out.println(noOfFolders);
listOfFolders[i].delete();
}
}
}
}
catch(Exception e)
{
//e.printStackTrace();
}
return(noOfFolders);