Форум: "WinAPI";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
ВнизПривелегии бэкапа Найти похожие ветки
← →
Рамиль © (2007-04-02 12:17) [0]Хочу получить привелегию бакапа. Код отрабатывает без ошибок, в папку пускает, а файлы просмотреть не дает... Чего я не доделал?
program BkpPriv;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
var
Rlst: LongBool;
StartUpInfo: TStartUpInfo;
ProcessInfo: TProcessInformation;
Error: integer;
f: text;
s: string;
function SetPrivileges(const S: String; const hProcess: Cardinal): Boolean;
var
hToken: THandle;
tkp,PrevState: _TOKEN_PRIVILEGES;
k: Cardinal;
ver: TOSVERSIONINFO;
begin
Result := false;
ver.dwOSVersionInfoSize := SizeOf(ver);
GetVersionEx(ver);
if ver.dwPlatformId = VER_PLATFORM_WIN32_NT then
begin
// "Включаем" привилегию
OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil, PChar(S), tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(PrevState), PrevState, k);
if GetLastError = ERROR_SUCCESS then
Result := true
end
end;
begin
FillChar(StartUpInfo, SizeOf(TStartUpInfo), 0);
with StartUpInfo do
begin
cb := SizeOf(TStartUpInfo);
dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
wShowWindow := SW_SHOWNORMAL;
end;
Rlst := CreateProcess(PChar(ParamStr(1)), nil, nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);
if Rlst then
with ProcessInfo do begin
WaitForInputIdle(hProcess, INFINITE); // ждем завершения инициализации
SetPrivileges("SeBackupPrivilege", hProcess);
CloseHandle(hThread); // закрываем дескриптор процесса
CloseHandle(hProcess); // закрываем дескриптор потока
end;
end.
← →
Рамиль © (2007-04-02 12:19) [1]т. е. я запускаю этим кодом файловый менеджер. Если дать привелегии текущему процессу, то при попытке открыть файл на чтение, вываливает нет доступа.
← →
Игорь Шевченко © (2007-04-02 12:22) [2]
> SetPrivileges("SeBackupPrivilege", hProcess);
а результат проверить ?
← →
Рамиль © (2007-04-02 12:27) [3]
> Игорь Шевченко © (02.04.07 12:22) [2]
ERROR_SUCCESS
Криво объяснил (
Если я запускаю этим кодом файловый менеджер, то к папкам я доступ получаю, но файлы не копируются и не просматриваются (нет доступа).
Если получить привелегии для текущего процесса, то все равно, при попытке открыть файл на чтение нет доступа.
← →
Рамиль © (2007-04-02 16:58) [4]Так. Разобрался, привилегии недостаточно :(
Надо еще при открытии файла флаг FILE_FLAG_BACKUP_SEMANTICS указывать...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.076 c