получить папку Common Documents в VBS - PullRequest
2 голосов
/ 04 января 2012

К моему великому огорчению, я должен использовать VBS для написания пользовательского действия InstallShield 2010 LE.У меня нет опыта работы с VBS, поэтому я в основном собираю фрагменты кода, которые я нахожу.

Мне нужно ухватиться за папку Common Documents (CSIDL_COMMON_DOCUMENTS).Это не определено в WScript.Shell.SpecialFolders (хотя Desktop для всех пользователей есть).Я нашел пример кода, который пытается связать системную DLL:

Private Declare Function SHGetFolderPath Lib "shfolder.dll" _
Alias "SHGetFolderPathA" _
    (ByVal hwndOwner As Long, _
    ByVal nFolder As Long, _
    ByVal hToken As Long, _
    ByVal dwReserved As Long, _
    ByVal lpszPath As String) As Long

Но когда я пытаюсь запустить его в VbsEdit, я получаю следующую ошибку в первой строке:

Microsoft VBScript compilation error: Expected end of statement

Есть идеи?

Ответы [ 2 ]

8 голосов
/ 04 января 2012

украдено у здесь

  Const CSIDL_COMMON_DOCUMENTS = &h2e
  Dim objShell : Set objShell = CreateObject("Shell.Application")
  WScript.Echo objShell.Namespace(CSIDL_COMMON_DOCUMENTS).Self.Path

выход:

C:\Documents and Settings\All Users\Documents
0 голосов
/ 05 января 2012

Игнорируя тот факт, что пользовательские действия VBScript очень проблематичны, вы можете просто запросить у WindowsInstaller расположение CommonAppDataFolder.

Свойство CommonAppDataFolder

commonAppDataFolder = session.Property("CommonAppDataFolder")
...