Как узнать объект ярлыка в 64-битной ОС - VB

Узнай цену своей работы

Формулировка задачи:

Имею ярлык к Internet Explorer. Браузер находится в папке C:\program files При выполнении кода:
Листинг программы
  1. msgbox CreateObject("WScript.Shell").CreateShortcut(Link).TargetPath
получаю путь C:\program files

(x86)

Воспользовался файловой переадресацией = не помогает.
Листинг программы
  1. Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
  2. Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
  3. Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
  4. Private Declare Function IsWow64Process Lib "kernel32" (ByVal hProc As Long, bWow64Process As Boolean) As Long
  5. Private Declare Function GetSystemWow64Directory Lib "kernel32.dll" Alias "GetSystemWow64DirectoryA" (ByVal lpBuffer As String, ByVal uSize As Long) As Long
  6. Private Declare Function Wow64DisableWow64FsRedirection Lib "kernel32" (ByRef oldvalue As Long) As Boolean
  7. Private Declare Function Wow64RevertWow64FsRedirection Lib "kernel32" (ByVal oldvalue As Long) As Boolean
  8. Option Explicit
  9. Private Sub main()
  10. Dim lWow64RedirectReturn As Long: lWow64RedirectReturn = 0
  11. Dim ret As Boolean
  12. Dim is64 As Boolean: is64 = Is64bitOS
  13. Debug.Print "Is OS 64-bit? " & is64
  14. If is64 Then ret = Wow64DisableWow64FsRedirection(lWow64RedirectReturn)
  15. Debug.Print "API = " & ret
  16. CheckRedirection
  17. GetLinkTarget
  18. If is64 Then ret = Wow64RevertWow64FsRedirection(lWow64RedirectReturn)
  19. Debug.Print "API = " & ret
  20. CheckRedirection
  21. GetLinkTarget
  22. End Sub
  23. Public Function Is64bitOS() As Boolean
  24. Dim bWow64Process As Boolean
  25. Dim handle As Long: handle = GetProcAddress(GetModuleHandle("kernel32"), "IsWow64Process") ' if IsWow64Process function exists
  26. If handle > 0 Then IsWow64Process GetCurrentProcess(), bWow64Process ' Is running under Wow64
  27. Is64bitOS = bWow64Process
  28. End Function
  29. Sub CheckRedirection()
  30. Dim exe: exe = Environ("SystemRoot") & "\system32\msg.exe"
  31. Debug.Print "Redirect = " & (Dir$(exe, vbReadOnly Or vbSystem Or vbHidden) <> vbNullString)
  32. End Sub
  33. Sub GetLinkTarget()
  34. Dim Link: Link = "C:\Users\Alex\Desktop\IE.lnk"
  35. Dim oLink: Set oLink = CreateObject("WScript.Shell").CreateShortcut(Link)
  36. Debug.Print oLink.TargetPath
  37. 'Debug.Print oLink.WorkingDirectory
  38. End Sub
1) Какие будут советы? 2) Может есть где спецификация самого формата данных?

Решение задачи: «Как узнать объект ярлыка в 64-битной ОС»

textual
Листинг программы
  1. c:\windows\syswow64\cscript.exe my.vbs

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы