Главная страница
    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.076 c
2-1188704544
aibolit
2007-09-02 07:42
2007.09.30
как запустить bat файл


2-1188644231
17Landgraf
2007-09-01 14:57
2007.09.30
Вопрос по поводу свойства Charset класса TFont


8-1167149205
S1lent
2006-12-26 19:06
2007.09.30
Карта высот


15-1188786679
Slider007
2007-09-03 06:31
2007.09.30
С днем рождения ! 3 сентября 2007 понедельник


15-1188992537
Desdechado
2007-09-05 15:42
2007.09.30
В чем смысл жизни?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский