![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
получить путь к Users... [D7]
guest © (2015-08-24 15:35:00)как получить путь к папке Users (к примеру c:\Users\ или с:\Пользователи\ в вин7-8 и C:\Documents and Settings\ в винХР) из-под системной учетки (процесс под system)?
про SHGetFolderPath в курсе, но он пошлет меня в C:\ProgramData\ в случае с вин7+....
Германн (2015-09-05 01:15:00) [1]
> ВладОшин © (04.09.15 22:34) [12]
>
> https://msdn.microsoft.com/ru-ru/library/windows/desktop/bb762203(v=vs.
> 85).aspx
>
Влад, устарело это уже давно. Пока поддерживается, но зачем эту фукнцию рекомендовать?
ВладОшин (2015-09-04 22:34:00) [2]https://msdn.microsoft.com/ru-ru/library/windows/desktop/bb762203(v=vs.85).aspx
DVM (2015-08-25 11:30:00) [3]
> guest (24.08.15 22:21) [10]
Папки юзеров могут быть перенесены из папки Users
guest (2015-08-24 22:21:00) [4]мне нужна она сама, чтобы потом уже бегать по папкам всех юзеров и искать в них кое-что
DVM (2015-08-24 17:16:00) [5]
> а для winxp папка c:\documents and settings\ постоянна для
> всех языков да?
А зачем вообще нужен путь именно к documents and settings ? Там же вложенные папки обычно используются, но не она сама.
guest (2015-08-24 17:00:00) [6]вернее %SYSTEMDRIVE%\documents and settings\ для ХР...
guest (2015-08-24 16:50:00) [7]угу, спасибо, GetKnownFolderPath работает для vista+.. а для winxp папка c:\documents and settings\ постоянна для всех языков да?
DVM (2015-08-24 16:30:00) [8]
uses
Windows, ActiveX;
type
TKnownFolderID = TGUID;
const
FOLDERID_UserProfiles: TKnownFolderID = '{0762D272-C50A-4BB0-A382-697DCD729B80}';
function GetKnownFolderPath(const ID: TKnownFolderID): WideString;
type
TSHGetKnownFolderPath = function(const rfid: TKnownFolderID; dwFlags: DWord;
hToken: THandle; var ppSzPath: LPWSTR) : HResult; stdCall;
var
hShell: HModule;
SHGetKnownFolderPath: TSHGetKnownFolderPath;
Buffer: LPWSTR;
begin
Result := '';
hShell := LoadLibrary('shell32.dll');
if hShell > 0 then
try
@SHGetKnownFolderPath := GetProcAddress(hShell, 'SHGetKnownFolderPath');
if Assigned(SHGetKnownFolderPath) then
if Succeeded(SHGetKnownFolderPath(ID, 0, 0, Buffer)) then
try
Result := Buffer;
finally
CoTaskMemFree(Buffer);
end;
finally
FreeLibrary(hShell);
end;
end;
DVM (2015-08-24 16:21:00) [9]
> guest (24.08.15 16:16) [4]
Через CSIDL_ туда не попасть.
SHGetKnownFolderPath() + FOLDERID_UserProfiles
https://msdn.microsoft.com/en-us/library/windows/desktop/dd378457(v=vs.85).aspx
guest (2015-08-24 16:16:00) [10]какой флаг указать, чтобы стабильно попадать в папку юзеров из-под любой учетки включая system?
guest (2015-08-24 16:14:00) [11]послал в C:\ProgramData\ при CSIDL_COMMON_APPDATA, SHGFP_TYPE_CURRENT
guest (2015-08-24 16:09:00) [12]послал в C:\Windows\system32\config\systemprofile\AppData\Roaming\ при параметрах CSIDL_APPDATA, SHGFP_TYPE_CURRENT
DVM (2015-08-24 15:51:00) [13]
> про SHGetFolderPath в курсе
Теперь модно пользоваться SHGetKnownFolderPath()
> но он пошлет меня в C:\ProgramData\
С чего вдруг он тебя туда пошлет?