Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 12.10.2021
Сообщений: 130
JS

Присвоение иконки папке, создание в ней Desktop.ini

16.07.2024, 11:32. Показов 1020. Ответов 15

Студворк — интернет-сервис помощи студентам
Всем привет. Нарыл подобный скрипт. Сделал кнопку на папке, но проблема, он создаёт Desktop.ini не внутри папки, а рядом. Как подправить чтоб Desktop.ini создавался во внутрь папки, кнопка поверх?

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var textData, FSO, folderObj, fileObj, fileObjStr;
 
FSO = new ActiveXObject("Scripting.FileSystemObject");
 
textData = "[.ShellClassInfo]\n" +
"IconResource=C:\\Windows\\system32\\SHELL32.dll,5";
 
folderObj = FSO.GetFolder(".");
 
if (FSO.FileExists("Desktop.ini")){
   var ft = FSO.GetFile("Desktop.ini");
   ft.Delete(1);
   ft = undefined;
}
 
fileObjStr = FSO.OpenTextFile("Desktop.ini", 2, 1);
 
fileObjStr.Write(textData);
fileObjStr.Close();
 
fileObj = FSO.GetFile("Desktop.ini");
fileObj.Attributes = fileObj.Attributes | 6; //6 - Битовые флаги "Скрытый" + "Системный" (2 + 4)
 
folderObj.Attributes = folderObj.Attributes | 4; //4 - Битовый флаг "Системный" (4)
 
----------------------------------------------
И УДАЛЕНИЕ
 
var FSO, fileObj, folderObj;
 
FSO = new ActiveXObject("Scripting.FileSystemObject");
 
if (FSO.FileExists("Desktop.ini")) {
   fileObj = FSO.GetFile("Desktop.ini");
   fileObj.Delete(1);
}
 
folderObj = FSO.GetFolder(".");
folderObj.Attributes = folderObj.Attributes & ~4; //Снимаем с папки битовый флаг 4 (Системная)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.07.2024, 11:32
Ответы с готовыми решениями:

Ссылки на иконки в desktop.ini
Почему строки в desktop.ini (в Windows 7) IconResource=C:\Windows\system32\shell32.dll,13 ...

Как скопировать папку со всеми Desktop.ini, находящимися в ней?
При обычном копировании desktop.ini не заменяются в папке, куда копирую

Создание и присвоение ико (ico) папке
Доброго времени суток. Пытаюсь не первый день решить проблему, проблема в автоматическом создании папки и изменении ее иконки (именно ее,...

15
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
16.07.2024, 16:28
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var folderName = "My_Folder";
 
var textData, FSO, folderObj, fileObj, fileObjStr;
 
FSO = new ActiveXObject("Scripting.FileSystemObject");
 
textData = "[.ShellClassInfo]\n" +
"IconResource=C:\\Windows\\system32\\SHELL32.dll,5";
 
folderObj = FSO.GetFolder(folderName);
 
if (FSO.FileExists("Desktop.ini")){
   var ft = FSO.GetFile("Desktop.ini");
   ft.Delete(1);
   ft = undefined;
}
 
fileObjStr = FSO.OpenTextFile("Desktop.ini", 2, 1);
 
fileObjStr.Write(textData);
fileObjStr.Close();
 
fileObj = FSO.GetFile("Desktop.ini");
fileObj.Attributes = fileObj.Attributes | 6; //6 - Битовые флаги "Скрытый" + "Системный" (2 + 4)
 
folderObj.Attributes = folderObj.Attributes | 4; //4 - Битовый флаг "Системный" (4)
в строке 1 My_Folder замените на необходимое имя папки.
0
1 / 1 / 0
Регистрация: 12.10.2021
Сообщений: 130
16.07.2024, 17:21  [ТС]
Цитата Сообщение от nekit270 Посмотреть сообщение
в строке 1 My_Folder замените на необходимое имя папки.
Не, этот изначально даже не работает, пока не сменил строку folderObj = FSO.GetFolder(folderName); на ту что в моём folderObj = FSO.GetFolder("."); И всё равно появляется рядом. И имя тут не нужно ни папке ни файлу. Есть кнопка на папке, должен создаваться внутри папки файлик Desktop.ini
0
6985 / 2875 / 1106
Регистрация: 06.06.2017
Сообщений: 9,765
16.07.2024, 17:27
Цитата Сообщение от kopirss Посмотреть сообщение
Есть кнопка на папке
Что за кнопка?
0
1 / 1 / 0
Регистрация: 12.10.2021
Сообщений: 130
16.07.2024, 17:43  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Что за кнопка?
Изменить значок.
0
6985 / 2875 / 1106
Регистрация: 06.06.2017
Сообщений: 9,765
16.07.2024, 18:00
Это лишь название, что может быть не только у кнопки. Что именно делает её кнопкой? Реализация кнопки где и какая?
0
1 / 1 / 0
Регистрация: 12.10.2021
Сообщений: 130
16.07.2024, 18:20  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Что именно делает её кнопкой?
Этот скрипт делает, в кнопке к нему стоит путь в реестре. При нажатии кнопки на папке должен создавать в папке Desktop.ini. не заходя в папку, иконка меняется. Но скрипт создаёт .ini рядом, а надо во внутрь.
0
6985 / 2875 / 1106
Регистрация: 06.06.2017
Сообщений: 9,765
16.07.2024, 18:39
Я спросил про кнопку, а не скрипт под эту кнопку...
0
1 / 1 / 0
Регистрация: 12.10.2021
Сообщений: 130
16.07.2024, 18:50  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
спросил про кнопку
Кнопка стоит на папках, меняет иконку папке. В папке создаётся Desktop.ini
0
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
16.07.2024, 20:28
kopirss,
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var folderName = ".\\" + /* здесь путь к папке, полученной из кнопки */;
 
var textData, FSO, folderObj, fileObj, fileObjStr;
 
FSO = new ActiveXObject("Scripting.FileSystemObject");
 
textData = "[.ShellClassInfo]\n" +
"IconResource=C:\\Windows\\system32\\SHELL32.dll,5";
 
folderObj = FSO.GetFolder(folderName);
 
if (FSO.FileExists(folderName + "\\Desktop.ini")){
   var ft = FSO.GetFile(folderName + "\\Desktop.ini");
   ft.Delete(1);
   ft = undefined;
}
 
fileObjStr = FSO.OpenTextFile(folderName + "\\Desktop.ini", 2, 1);
 
fileObjStr.Write(textData);
fileObjStr.Close();
 
fileObj = FSO.GetFile(folderName + "\\Desktop.ini");
fileObj.Attributes = fileObj.Attributes | 6; //6 - Битовые флаги "Скрытый" + "Системный" (2 + 4)
 
folderObj.Attributes = folderObj.Attributes | 4; //4 - Битовый флаг "Системный" (4)
0
1 / 1 / 0
Регистрация: 12.10.2021
Сообщений: 130
16.07.2024, 21:07  [ТС]
Цитата Сообщение от nekit270 Посмотреть сообщение
var folderName = ".\" + /* здесь путь к папке, полученной из кнопки */;
Нет, тоже самое. Или я что то недопоня в пути. Надо как то Desktop.ini создавать в папку не заходя туда, не в конкретную, а в любую. Кнопка на всех папках, ветка HKEY_CLASSES_ROOT\Directory\shell
0
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
16.07.2024, 21:52
Лучший ответ Сообщение было отмечено kopirss как решение

Решение

Цитата Сообщение от kopirss Посмотреть сообщение
Кнопка на всех папках, ветка HKEY_CLASSES_ROOT\Directory\shell
это называется "пункт контекстного меню".

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var folderName = WSH.Arguments(0);
 
var FSO = WSH.CreateObject("Scripting.FileSystemObject");
 
var textData = "[.ShellClassInfo]\r\n" +
"IconResource=C:\\Windows\\system32\\SHELL32.dll,5\r\n" + 
"[ViewState]\r\n" +
"Mode=\r\n" +
"Vid=\r\n" +
"FolderType=Generic\r\n";
 
FSO.GetFolder(folderName).Attributes = 1; 
 
if(FSO.FileExists(folderName + "\\Desktop.ini")){
   var ft = FSO.GetFile(folderName + "\\Desktop.ini");
   ft.Delete(1);
}
 
var fileObjStr = FSO.OpenTextFile(folderName + "\\Desktop.ini", 2, true, -1);
 
fileObjStr.Write(textData);
fileObjStr.Close();
 
FSO.GetFile(folderName + "\\Desktop.ini").Attributes = 6;
пример reg-файла:
Code
1
2
3
4
5
6
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\Directory\shell\ChangeIcon]
 
[HKEY_CLASSES_ROOT\Directory\shell\ChangeIcon\Command]
@="wscript //nologo \"C:\\path\\to\\script.js\" \"%V\""
1
6985 / 2875 / 1106
Регистрация: 06.06.2017
Сообщений: 9,765
16.07.2024, 22:07
Цитата Сообщение от kopirss Посмотреть сообщение
Кнопка стоит на папках
Вот прям стоит, одна-одинёшенька?
Цитата Сообщение от nekit270 Посмотреть сообщение
Цитата Сообщение от kopirss Посмотреть сообщение
Кнопка на всех папках, ветка HKEY_CLASSES_ROOT\Directory\shell
это называется "пункт контекстного меню".
Отсюда вывод: "Не лезть поперёд батьки в пекло." Пока kopirss не родил что-то вразумительное (про ветку), рано было коды скидывать.
0
1 / 1 / 0
Регистрация: 12.10.2021
Сообщений: 130
17.07.2024, 00:43  [ТС]
Цитата Сообщение от nekit270 Посмотреть сообщение
var folderName = WSH.Arguments(0);
var FSO = WSH.CreateObject("Scripting.FileSystemOb ject");
var textData = "[.ShellClassInfo]\r\n" +
"IconResource=C:\\Windows\\system32\\SHE LL32.dll,5\r\n" +
"[ViewState]\r\n" +
"Mode=\r\n" +
"Vid=\r\n" +
"FolderType=Generic\r\n";
FSO.GetFolder(folderName).Attributes = 1;
if(FSO.FileExists(folderName + "\\Desktop.ini")){
var ft = FSO.GetFile(folderName + "\\Desktop.ini");
ft.Delete(1);
}
var fileObjStr = FSO.OpenTextFile(folderName + "\\Desktop.ini", 2, true, -1);
fileObjStr.Write(textData);
fileObjStr.Close();
FSO.GetFile(folderName + "\\Desktop.ini").Attributes = 6;
Этот работает. Спасибо. А можно последний, который будет удалять? (в вопросе темы мой пример)

Добавлено через 2 минуты
Цитата Сообщение от FlasherX Посмотреть сообщение
Вот прям стоит, одна-одинёшенька?
Ну да, я же только учусь.
0
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
17.07.2024, 01:10
Цитата Сообщение от kopirss Посмотреть сообщение
А можно последний, который будет удалять?
JavaScript
1
2
3
4
5
6
7
var folderName = WSH.Arguments(0);
 
var FSO = WSH.CreateObject("Scripting.FileSystemObject");
 
if(FSO.FileExists(folderName + "\\Desktop.ini")){
    FSO.GetFile(folderName + "\\Desktop.ini").Delete(1);
}
1
1 / 1 / 0
Регистрация: 12.10.2021
Сообщений: 130
17.07.2024, 01:18  [ТС]
Ага, спасибо большое.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.07.2024, 01:18
Помогаю со студенческими работами здесь

Desktop.ini, info2, dc3.ini, dc4
Проблема 1.в папке корзины RECYCLER на всех дисках есть папка s-1-5-21-57989841-764733703-725345543-1003 в ней файлы desktop.ini, info2,...

Создание ini файла в одной папке с приложением
Юзаю Rad Studio 2010 создаю инишку TIniFile *Start = new TIniFile("path.ini"); Нужно создать файл в одной папке с программой, а оно создает...

recycle.bin desktop.ini
принес домой внешний ЖД до этого побывал по моим подозрениям на зараженном компьютере и теперь на каждом ЖД есть папка $RECYCLE.BIN ...

Папка autologger и desktop.ini
Помню как то с помощью рекомендаций с этого форума чистил комп от вирусов, качал autologger, отправлял отчёты, вроде вирусов не было, но...

Найти и заменить в файлах, desktop.ini
Notepad++ Не ищет и не заменят текст в desktop.ini. Как сделать, чтобы искал? Галочку "В скрытых папках" и "во всех...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru