Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.047 c
2-1188226449
ares18
2007-08-27 18:54
2007.09.30
Про глюки XOR алгоритма


2-1188969414
alshtam
2007-09-05 09:16
2007.09.30
печать


2-1189072125
delphiForever
2007-09-06 13:48
2007.09.30
можна ли рисовать на битмапе в TThread


2-1188903449
em240
2007-09-04 14:57
2007.09.30
MSSQL2000+запуск функции из DLL


3-1180017883
Slonyra
2007-05-24 18:44
2007.09.30
Экспорт из DBF в Access





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский