ListStartMenuLnkPersistence check for every *.lnk in Windows StartMenu folders and extract every executable path in those links
(verbose bool)
| 58 | |
| 59 | // ListStartMenuLnkPersistence check for every *.lnk in Windows StartMenu folders and extract every executable path in those links |
| 60 | func ListStartMenuLnkPersistence(verbose bool) (exePath []string, errors []error) { |
| 61 | |
| 62 | startMenuFolders, err := ListStartMenuFolders(verbose) |
| 63 | if err != nil { |
| 64 | errors = append(errors, err) |
| 65 | } |
| 66 | |
| 67 | for _, path := range startMenuFolders { |
| 68 | |
| 69 | files, err := RetrivesFilesFromUserPath(path, true, []string{".lnk"}, false, verbose) |
| 70 | |
| 71 | if err != nil { |
| 72 | errors = append(errors, fmt.Errorf("%s - %s", path, err.Error())) |
| 73 | } |
| 74 | |
| 75 | for _, p := range files { |
| 76 | lnk, lnkErr := golnk.File(p) |
| 77 | if lnkErr != nil { |
| 78 | errors = append(errors, fmt.Errorf("%s - Lnk parse error", p)) |
| 79 | continue |
| 80 | } |
| 81 | |
| 82 | exePath = append(exePath, lnk.LinkInfo.LocalBasePath) |
| 83 | } |
| 84 | } |
| 85 | |
| 86 | return exePath, errors |
| 87 | } |
no test coverage detected