Каталог «Общие документы» в Windows XP
C:\Documents and Settings\All Users\Documents
Или
%ALLUSERSPROFILE%\Documents
Соответствующий каталог в Vista / 7
C:\Users\Public
Или
%PUBLIC%\Documents
Но то, что вы действительно ищете, это значение KNOWNFOLDERID , равное FOLDERID_PublicDocuments
(устаревшее CSIDL_COMMON_DOCUMENTS
).Функция SHGetFolderPath может затем указать вам путь.
Или более простая альтернатива VBScript, но я не уверен, насколько это надежно для разных версий ОС:
Const CSIDL_COMMON_DOCUMENTS = &h2e
Set oShell = CreateObject("Shell.Application")
Wscript.Echo oShell.Namespace(CSIDL_COMMON_DOCUMENTS).Self.Path
Я думаю, NameSpace не принимает этот конкретный постоянная .Таким образом, вы можете взять COMMONAPPDATA = &H23
и затем использовать его родителя.Но это не очень чисто или интернационализировано:
Wscript.Echo oShell.NameSpace(&h23).ParentFolder.Self.Path & "\Documents"
Но поскольку вы используете Inno Setup, вам действительно следует использовать {commondocs} Константа папки оболочки и упростить ее для себя.