В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык.
Проблемма в том, что на разных языках она называется по разному, в русской винде например "Стандартные".
В интернете/msdn чего-то ничего не нашел
M>>В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык.
GG>Узнать имя в винде можно загрузив значение из реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion, свойство PF_AccessoriesName
Нет у меня в висте в реестре такого пункта И в МСДН про такой не написанно
Здравствуйте, GGoga, Вы писали:
GG>С Вистой работать не приходилось А если попробовать поиск по реестру по ключевому слову "Accessories"?
Я собственно с этого и начал свои поиски, но что-то ничего дельного не нашел
Сейчас проверил на другой висте там тоже нет.
А на ХР действительно есть такой ключ, там их даже два, ещё SM_AccessoriesName.
Ещё смущает что в интернете упоминания этого ключа выглядят в основном как кусок реестра.
Плюс в Windows\CurrentVersion\Explorer\Shell Folders её тоже нет
И в параметрах функции SHGetKnownFolderPath тоже нет.
Прям хоть в "Игры" запихивай, она есть
M>Плюс в Windows\CurrentVersion\Explorer\Shell Folders её тоже нет
Еще один маловероятный, но вариант. Посмотри переменные окружения (команда командной строки SET). Хотя вряд ли она чем-то сможет помочь Но с Вистой, к сожалению, ничем помочь не могу
GG>Еще один маловероятный, но вариант. Посмотри переменные окружения (команда командной строки SET). Хотя вряд ли она чем-то сможет помочь
Да, забыл сказать, это тоже уже смотрел.
>Но с Вистой, к сожалению, ничем помочь не могу
Да впринципе, виста не так чтобы сверх от ХР отличается, меньше чем NT от 2000.
Мне в голову совсем дурная мысль пришла: а она вообще где-то указывается? Может просто при установке создается один раз и всё?
надо будет дистрибутив поковырять...
На одной из виртуалок у меня стоит русская ХР, на ней бетка IE8 английская, так вот она мне воздала именно английскую "Accessories"!
Я конечно понимаю что это бетка и что в макрософт правая рука не знает что делает левая, но блин это всё же таки IE.
Здравствуйте, maximilliangreat, Вы писали:
M>В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык. M>Проблемма в том, что на разных языках она называется по разному, в русской винде например "Стандартные". M>В интернете/msdn чего-то ничего не нашел
где находится папка можно получить здесь
SHGetFolderPath(
CSIDL_PROGRAMS // для текущего пользователя
/* CSIDL_COMMON_PROGRAMS // для всех (All Users) */
)
т.е искомая вами папка будет находиться в этой папке,
но вот дальше проблема, как получить имя этой самой папки "Стандартные"("Accessories"), в msdn тоже найти не смог
AF>где находится папка можно получить здесь AF> AF>SHGetFolderPath( AF>CSIDL_PROGRAMS // для текущего пользователя
В моём случае даже проще, мне исталлятор её сразу возвращает
AF>т.е искомая вами папка будет находиться в этой папке, AF>но вот дальше проблема, как получить имя этой самой папки "Стандартные"("Accessories"), в msdn тоже найти не смог
M>Да впринципе, виста не так чтобы сверх от ХР отличается, меньше чем NT от 2000.
С этим спорить не буду, но иногда те небольшие отличия очень "достают", например как в данном случае
Но все-таки должен быть какой-то способ получения полного пути, единственный хороший помощник в этом деле — старый добрый google.com. Я уверен, что ты не один, кто столкнулся с такой проблемой
M>Мне в голову совсем дурная мысль пришла...
К стати, о дурных мыслях. Можно на крайний случай применить очень-очень "корявый" способ. Путь к папке Programms получить можно, а следовательно и узнать имена всех вложенных в него каталогов. Все приложения имеют названия ярлыков на английском языке, следовательно, можно сравнивать имена файлов каждой папки на наличие ярлыка на какое-нибудь стандартное приложение, находящееся в папке "Стандартные". (Но это просто очень карявый и крайний вариант!)
On Windows XP use:
CSIDL_COMMON_STARTMENU + "\Programs\Accessories\Media Center\Media Center Programs"
Вот почему они там такое советуют?
GG>К стати, о дурных мыслях. Можно на крайний случай применить очень-очень "корявый" способ. Путь к папке Programms получить можно, а следовательно и узнать имена всех вложенных в него каталогов. Все приложения имеют названия ярлыков на английском языке, следовательно, можно сравнивать имена файлов каждой папки на наличие ярлыка на какое-нибудь стандартное приложение, находящееся в папке "Стандартные". (Но это просто очень карявый и крайний вариант!)
Ну собственно, пока единственный рабочий способ
Хотя конечно немножко стёмный, такие обычно после сервиспаков/новых версий работать пререстают
Здравствуйте, maximilliangreat, Вы писали:
M>Хотя конечно немножко стёмный, такие обычно после сервиспаков/новых версий работать пререстают
В принципе, я не думаю, что после создания какого-нибудь сервис пака эту папку удалят. Вот какой-нибудь ярлык могут. Но в таком случае, можно создать массив имен ярлыков и проверять на вероятность наличия одного и более в папках, составить процентные соотношения, и выбрать папку, имеющую большый процентный коэффициент (на случай, если какой-нибудь ярлык MicroSoft вздумает перенести в другое место).
Здравствуйте, maximilliangreat, Вы писали:
M>В меню "Пуск/программы" находится папка "Accessories", хочется положить туда ярлык. M>Проблемма в том, что на разных языках она называется по разному, в русской винде например "Стандартные".
Собственно, все сложности с решением этой проблемы из-за того, что это неправильная проблема. Ваша программа не входит в поставку Windows и непонятно, почему вообще её ярлык должен быть в Accessories. Положите ярлык в Программы или в Программы/имя_пакета. Или в некоторых установочных движках есть возможность спросить пользователя, куда положить ярлыки. Если пользователь решит, что ему удобно вашу программу видеть в Стандартных, он её туда положит. Если нет — так и нечего.
C>Собственно, все сложности с решением этой проблемы из-за того, что это неправильная проблема. Ваша программа не входит в поставку Windows и непонятно, почему вообще её ярлык должен быть в Accessories. Положите ярлык в Программы или в Программы/имя_пакета. Или в некоторых установочных движках есть возможность спросить пользователя, куда положить ярлыки. Если пользователь решит, что ему удобно вашу программу видеть в Стандартных, он её туда положит. Если нет — так и нечего.
Собственно, если бы я делал инсталятор к программе на продажу потенциальным потребителям, то это была бы действительно неправильная проблема.
Я, на самом деле, администратор и задачи у меня при создании этого инсталятора несколько иные, ставится всё будет через ГПО и, естественно, у пользователя ничего спрашиваться небудет, иначе смысла от это исталятора не будет, я 500 пользователям чего-то объяснять устану Крайне желательно всё же заcунуть ярлык в "Accessories".
Здравствуйте, 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.
Здравствуйте, serge_levin, Вы писали:
_>Поиском по реестру нашел интересный ключ HKLM\Software\Microsoft\Windows\CurrentVersion _>А в нем есть 2 строковых параметра — PF_AccessoriesName и SM_AccessoriesName.
GGoga уже писал, про эти параметры.
Действительно в 2000 и ХР они есть. Проблемма что в висте их нет, проверял на двух вистах.
Здравствуйте, Роман Дубров, Вы писали:
РД>maximilliangreat пишет:
>> у пользователя ничего спрашиваться небудет, иначе смысла от это
РД>а что если положить 2 ярлыка?