Нет необходимости в 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