Доступ к каталогу меню «Пуск» в Windows Vista и 7 - PullRequest
2 голосов
/ 04 марта 2010

Я создаю новый ярлык внутри и обновляю мою программу в меню «Пуск». Я работал над получением переменной специальной среды ALLUSERSPROFILE, и она работала для меня под XP, он возвращает правильный путь, при использовании его под vista ir возвращает: \ ProgramData который бесполезен.Чтение переменной среды StartMenu также бессмысленно, она возвращает пустую строку.(На Vista это находится в Windows \ Start Menu, на английском языке, и если папка установки Windows имеет имя по умолчанию) Есть ли у кого-нибудь идея, как получить каталог startmenu для «All Users». И будет ли это общее решение?что работает под XP и Vista?

Ответы [ 3 ]

4 голосов
/ 04 марта 2010

Вы хотите CSIDL_COMMON_STARTMENU. Это не определено в перечислении Environment.SpecialFolders, но вы можете использовать Win32 API через P / Invoke :

[DllImport("shell32.dll")]
static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner,
   [Out] StringBuilder lpszPath, int nFolder, bool fCreate);

int CSIDL_COMMON_STARTMENU = 0x16;
StringBuilder path = new StringBuilder(260);
SHGetSpecialFolderPath(IntPtr.Zero, path, CSIDL_COMMON_STARTMENU, false);

CSIDL_COMMON_STARTMENU (FOLDERID_CommonStartMenu) Каталог файловой системы, содержащий программы и папки, которые появляются в меню «Пуск» для всех пользователи. Типичный путь - C: \ Documents и Настройки \ Все пользователи \ Меню Пуск. Действительно только для систем Windows NT.

1 голос
/ 17 июня 2011

Нет необходимости в Win32 API и нет ручного доступа к реестру. Я использую Microsoft Framework 4.0 и могу успешно выполнить следующие действия в Win7 и XP :

 Dim diStartMenu As New IO.DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu))
 fiShortCut = New IO.FileInfo(IO.Path.Combine(diStartMenu.FullName, ApplicationTitle & ".lnk"))

это вернет следующий путь для diStartMenu:

C:\ProgramData\Microsoft\Windows\Start Menu

это полностью соответствует значению реестра в

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
0 голосов
/ 04 марта 2010

Глядя под реестром я нашел следующий ключ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Папки оболочки есть значение с именем Common Start Menu, которое содержит путь. Работает на Vista и XP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...