Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 04.05.08 12:20
Оценка:
В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык.
Проблемма в том, что на разных языках она называется по разному, в русской винде например "Стандартные".
В интернете/msdn чего-то ничего не нашел
Re: Узнать где находится папка "Accessories"
От: GGoga  
Дата: 05.05.08 10:51
Оценка:
Здравствуйте, maximilliangreat, Вы писали:

M>В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык.


Узнать имя в винде можно загрузив значение из реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion, свойство PF_AccessoriesName
Re[2]: Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 05.05.08 11:54
Оценка:
M>>В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык.

GG>Узнать имя в винде можно загрузив значение из реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion, свойство PF_AccessoriesName


Нет у меня в висте в реестре такого пункта И в МСДН про такой не написанно
Re[3]: Узнать где находится папка "Accessories"
От: GGoga  
Дата: 05.05.08 12:06
Оценка:
M>Нет у меня в висте в реестре такого пункта И в МСДН про такой не написанно

С Вистой работать не приходилось А если попробовать поиск по реестру по ключевому слову "Accessories"?
Re[4]: Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 05.05.08 12:35
Оценка:
Здравствуйте, GGoga, Вы писали:

GG>С Вистой работать не приходилось А если попробовать поиск по реестру по ключевому слову "Accessories"?


Я собственно с этого и начал свои поиски, но что-то ничего дельного не нашел
Сейчас проверил на другой висте там тоже нет.
А на ХР действительно есть такой ключ, там их даже два, ещё SM_AccessoriesName.
Ещё смущает что в интернете упоминания этого ключа выглядят в основном как кусок реестра.
Re[5]: Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 05.05.08 12:39
Оценка:
Плюс в Windows\CurrentVersion\Explorer\Shell Folders её тоже нет
И в параметрах функции SHGetKnownFolderPath тоже нет.
Прям хоть в "Игры" запихивай, она есть
Re[6]: Узнать где находится папка "Accessories"
От: GGoga  
Дата: 05.05.08 12:52
Оценка:
M>Плюс в Windows\CurrentVersion\Explorer\Shell Folders её тоже нет

Еще один маловероятный, но вариант. Посмотри переменные окружения (команда командной строки SET). Хотя вряд ли она чем-то сможет помочь Но с Вистой, к сожалению, ничем помочь не могу
Re[7]: Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 05.05.08 14:16
Оценка:
Здравствуйте, GGoga, Вы писали:


GG>Еще один маловероятный, но вариант. Посмотри переменные окружения (команда командной строки SET). Хотя вряд ли она чем-то сможет помочь


Да, забыл сказать, это тоже уже смотрел.

>Но с Вистой, к сожалению, ничем помочь не могу


Да впринципе, виста не так чтобы сверх от ХР отличается, меньше чем NT от 2000.

Мне в голову совсем дурная мысль пришла: а она вообще где-то указывается? Может просто при установке создается один раз и всё?
надо будет дистрибутив поковырять...
На одной из виртуалок у меня стоит русская ХР, на ней бетка IE8 английская, так вот она мне воздала именно английскую "Accessories"!
Я конечно понимаю что это бетка и что в макрософт правая рука не знает что делает левая, но блин это всё же таки IE.
Re: Узнать где находится папка "Accessories"
От: Alexey Frolov Беларусь  
Дата: 05.05.08 15:25
Оценка:
Здравствуйте, maximilliangreat, Вы писали:

M>В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык.

M>Проблемма в том, что на разных языках она называется по разному, в русской винде например "Стандартные".
M>В интернете/msdn чего-то ничего не нашел

где находится папка можно получить здесь

SHGetFolderPath(
CSIDL_PROGRAMS // для текущего пользователя
/* CSIDL_COMMON_PROGRAMS // для всех (All Users) */
)


т.е искомая вами папка будет находиться в этой папке,
но вот дальше проблема, как получить имя этой самой папки "Стандартные"("Accessories"), в msdn тоже найти не смог
Re[2]: Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 05.05.08 15:35
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:


AF>где находится папка можно получить здесь

AF>
AF>SHGetFolderPath(
AF>CSIDL_PROGRAMS // для текущего пользователя

В моём случае даже проще, мне исталлятор её сразу возвращает

AF>т.е искомая вами папка будет находиться в этой папке,

AF>но вот дальше проблема, как получить имя этой самой папки "Стандартные"("Accessories"), в msdn тоже найти не смог

Re[2]: Узнать где находится папка "Accessories"
От: Alexey Frolov Беларусь  
Дата: 05.05.08 15:37
Оценка:
Сори, невнимательно прочитал, и сразу не заметил, что до этого пункта вы уже добрались, проблема только с названием
Re[8]: Узнать где находится папка "Accessories"
От: GGoga  
Дата: 05.05.08 17:32
Оценка:
M>Да впринципе, виста не так чтобы сверх от ХР отличается, меньше чем NT от 2000.

С этим спорить не буду, но иногда те небольшие отличия очень "достают", например как в данном случае
Но все-таки должен быть какой-то способ получения полного пути, единственный хороший помощник в этом деле — старый добрый google.com. Я уверен, что ты не один, кто столкнулся с такой проблемой

M>Мне в голову совсем дурная мысль пришла...


К стати, о дурных мыслях. Можно на крайний случай применить очень-очень "корявый" способ. Путь к папке Programms получить можно, а следовательно и узнать имена всех вложенных в него каталогов. Все приложения имеют названия ярлыков на английском языке, следовательно, можно сравнивать имена файлов каждой папки на наличие ярлыка на какое-нибудь стандартное приложение, находящееся в папке "Стандартные". (Но это просто очень карявый и крайний вариант!)

Удачи!
Re[9]: Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 06.05.08 09:09
Оценка:
Здравствуйте, GGoga, Вы писали:


GG> единственный хороший помощник в этом деле — старый добрый google.com. Я уверен, что ты не один, кто столкнулся с такой проблемой


Да вот только толи я слов для него правильных не знаю, толи ещё что, но ничё дельного пока не нашёл.
Зато нашел такую забавную вещь http://msdn.microsoft.com/en-us/library/bb174608.aspx

On Windows XP use: 
CSIDL_COMMON_STARTMENU + "\Programs\Accessories\Media Center\Media Center Programs"

Вот почему они там такое советуют?

GG>К стати, о дурных мыслях. Можно на крайний случай применить очень-очень "корявый" способ. Путь к папке Programms получить можно, а следовательно и узнать имена всех вложенных в него каталогов. Все приложения имеют названия ярлыков на английском языке, следовательно, можно сравнивать имена файлов каждой папки на наличие ярлыка на какое-нибудь стандартное приложение, находящееся в папке "Стандартные". (Но это просто очень карявый и крайний вариант!)


Ну собственно, пока единственный рабочий способ
Хотя конечно немножко стёмный, такие обычно после сервиспаков/новых версий работать пререстают
Re[10]: Узнать где находится папка "Accessories"
От: GGoga  
Дата: 06.05.08 09:59
Оценка:
Здравствуйте, maximilliangreat, Вы писали:

M>Хотя конечно немножко стёмный, такие обычно после сервиспаков/новых версий работать пререстают


В принципе, я не думаю, что после создания какого-нибудь сервис пака эту папку удалят. Вот какой-нибудь ярлык могут. Но в таком случае, можно создать массив имен ярлыков и проверять на вероятность наличия одного и более в папках, составить процентные соотношения, и выбрать папку, имеющую большый процентный коэффициент (на случай, если какой-нибудь ярлык MicroSoft вздумает перенести в другое место).
Re: Узнать где находится папка "Accessories"
От: Centaur Россия  
Дата: 06.05.08 11:43
Оценка:
Здравствуйте, maximilliangreat, Вы писали:

M>В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык.

M>Проблемма в том, что на разных языках она называется по разному, в русской винде например "Стандартные".

Собственно, все сложности с решением этой проблемы из-за того, что это неправильная проблема. Ваша программа не входит в поставку Windows и непонятно, почему вообще её ярлык должен быть в Accessories. Положите ярлык в Программы или в Программы/имя_пакета. Или в некоторых установочных движках есть возможность спросить пользователя, куда положить ярлыки. Если пользователь решит, что ему удобно вашу программу видеть в Стандартных, он её туда положит. Если нет — так и нечего.
Re[2]: Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 06.05.08 12:58
Оценка:
Здравствуйте, Centaur, Вы писали:


C>Собственно, все сложности с решением этой проблемы из-за того, что это неправильная проблема. Ваша программа не входит в поставку Windows и непонятно, почему вообще её ярлык должен быть в Accessories. Положите ярлык в Программы или в Программы/имя_пакета. Или в некоторых установочных движках есть возможность спросить пользователя, куда положить ярлыки. Если пользователь решит, что ему удобно вашу программу видеть в Стандартных, он её туда положит. Если нет — так и нечего.


Собственно, если бы я делал инсталятор к программе на продажу потенциальным потребителям, то это была бы действительно неправильная проблема.
Я, на самом деле, администратор и задачи у меня при создании этого инсталятора несколько иные, ставится всё будет через ГПО и, естественно, у пользователя ничего спрашиваться небудет, иначе смысла от это исталятора не будет, я 500 пользователям чего-то объяснять устану Крайне желательно всё же заcунуть ярлык в "Accessories".
Re[3]: Узнать где находится папка "Accessories"
От: Роман Дубров Украина Я@Blogspot
Дата: 06.05.08 14:52
Оценка:
maximilliangreat пишет:

> у пользователя ничего спрашиваться небудет, иначе смысла от это


а что если положить 2 ярлыка?

--
np: [foobar2000] not started
Posted via RSDN NNTP Server 2.1 beta
http://www.linkedin.com/in/romandubrov .::. http://roman-dubrov.blogspot.com/ .::. http://www.flickr.com/photos/romandubrov/
Re: Узнать где находится папка "Accessories"
От: serge_levin Россия  
Дата: 06.05.08 15:27
Оценка:
Здравствуйте, maximilliangreat, Вы писали:

M>В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык.

M>Проблемма в том, что на разных языках она называется по разному, в русской винде например "Стандартные".
M>В интернете/msdn чего-то ничего не нашел

Поиском по реестру нашел интересный ключ HKLM\Software\Microsoft\Windows\CurrentVersion
А в нем есть 2 строковых параметра — PF_AccessoriesName и SM_AccessoriesName.

Логично было бы предположить, что PF — это папка для исполняемых файлов стандартных программ (PF — Program Files), а SM — папка под Start Menu.

Интересно посмотреть, что творится при наличии MUI если у разных пользователей выставлены разные языки, а так же в локализованных версиях Windows.

У себя это все нашел в Windows XP SP 3 Eng.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 07.05.08 07:14
Оценка:
Здравствуйте, serge_levin, Вы писали:

_>Поиском по реестру нашел интересный ключ HKLM\Software\Microsoft\Windows\CurrentVersion

_>А в нем есть 2 строковых параметра — PF_AccessoriesName и SM_AccessoriesName.

GGoga уже писал, про эти параметры.
Действительно в 2000 и ХР они есть. Проблемма что в висте их нет, проверял на двух вистах.
Re[4]: Узнать где находится папка "Accessories"
От: maximilliangreat  
Дата: 07.05.08 07:16
Оценка:
Здравствуйте, Роман Дубров, Вы писали:

РД>maximilliangreat пишет:


>> у пользователя ничего спрашиваться небудет, иначе смысла от это


РД>а что если положить 2 ярлыка?


Извиняюсь, не понял, зачем два ярлыка?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.