Получение привилегий backup/restore

Здесь обсуждается всё, что касается макросов.
Post Reply
2useven10
Posts: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Получение привилегий backup/restore

Post by 2useven10 »

Примечание модератора: начало обсуждения см. в теме Запрос дополнительных привилегий при поиске.
zg wrote:
fps wrote:
zg wrote:убираете все галочки и запускаете фар от имени администратора.
это не поможет
> снятие галки в системных настройках отключает диалог, но привилегии в этом случае не предоставляются, а значит это не решение вопроса <
backup/restore поднимаются элементарным макросом.
что-то вроде:
Last edited by 2useven10 on Fri 08 Sep, 2017 20:21, edited 2 times in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Запрос дополнительных привилегий при поиске

Post by John Doe »

Можно назвать как угодно, не обязательно _macroinit.lua
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Re: Запрос дополнительных привилегий при поиске

Post by fps »

zg,
вы под "элементарным макросом" имели ввиду что-то типа примера 2useven10?
По мне, так его ну никак элементарным не назовешь. Высший пилотаж какой-то. Если для остальных тут это элементарщина, то я пойду пока в песочнике поиграю..

2useven10,
у меня в Win7 32bit макрос тоже не работает
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Запрос дополнительных привилегий при поиске

Post by zg »

fps wrote:вы под "элементарным макросом" имели ввиду что-то типа примера 2useven10?
нет, у него как-то чересчур усложнено всё.
2useven10
Posts: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Запрос дополнительных привилегий при поиске

Post by 2useven10 »

zg wrote:
fps wrote:вы под "элементарным макросом" имели ввиду что-то типа примера 2useven10?
нет, у него как-то чересчур усложнено всё.
У меня проще не получается. ffi не знаю - только по примерам на форуме.
Но проблема в том, что не работает.
Может я накосячил, может этого не достаточно...
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Запрос дополнительных привилегий при поиске

Post by John Doe »

2useven10 wrote:Может я накосячил, [...]
Ага
hcurrp
hcurrсp
2useven10
Posts: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Запрос дополнительных привилегий при поиске

Post by 2useven10 »

поправил. с правкой работает?
я сейчас на xp и права на всё что можно у меня добавлены, проверить не на чем...
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Запрос дополнительных привилегий при поиске

Post by John Doe »

На 8.1 работает.
А на XP проверю завтра (надо зайти в System Volume Information) Update: на XP тоже работает.

По коду.
Я так понимаю все привилегии можно передать массивом за 1 вызов.
И ненулевое значение, возвращённое функцией AdjustTokenPrivileges, ещё не значит что операция удалась, поэтому тут надо дополнительно использовать GetLastError.

P.S.
Ну и как уже сказано, SE_CREATE_SYMBOLIC_LINK_NAME устанавливать нет смысла.
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Re: Запрос дополнительных привилегий при поиске

Post by fps »

На win7 работает.
Большое спасибо.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Запрос дополнительных привилегий при поиске

Post by zg »

альтернативный вариант попроще.
moonscript:

Code: Select all

ffi=require"ffi"
C=ffi.C
advapi32=ffi.load"advapi32"
safe_cdef=(name,def)->
  if not pcall(ffi.sizeof,name) then ffi.cdef(def)
safe_cdef "LUID",[[
  typedef struct _LUID {
    unsigned long LowPart;
    long HighPart;
  } LUID;
]]
safe_cdef "LUID_AND_ATTRIBUTES",[[
  typedef struct _LUID_AND_ATTRIBUTES {
    LUID Luid;
    unsigned long Attributes;
  } LUID_AND_ATTRIBUTES;
]]
safe_cdef "TOKEN_PRIVILEGES",[[
  typedef struct _TOKEN_PRIVILEGES {
    unsigned long PrivilegeCount;
    LUID_AND_ATTRIBUTES Privileges[1];
  } TOKEN_PRIVILEGES;
]]
ffi.cdef[[
int32_t LookupPrivilegeValueA(const char* lpSystemName,const char* lpName,LUID* lpLuid);
int32_t OpenProcessToken(void* ProcessHandle,unsigned long DesiredAccess,void** TokenHandle);
int32_t AdjustTokenPrivileges(void* TokenHandle,int32_t DisableAllPrivileges, TOKEN_PRIVILEGES* NewState,unsigned long BufferLength,TOKEN_PRIVILEGES* PreviousState,unsigned long* ReturnLength);
int32_t CloseHandle(void* hObject);
void* GetCurrentProcess(void);
]]

TOKEN_ADJUST_PRIVILEGES=0x0020
SE_PRIVILEGE_ENABLED=0x00000002

EnablePrivilege=(name)->
  priv=ffi.new"TOKEN_PRIVILEGES"
  priv.PrivilegeCount=1
  priv.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED
  if 0~=advapi32.LookupPrivilegeValueA ffi.NULL,name,priv.Privileges[0].Luid
    token=ffi.new("void*[1]")
    if 0~=advapi32.OpenProcessToken C.GetCurrentProcess!,TOKEN_ADJUST_PRIVILEGES,token
      advapi32.AdjustTokenPrivileges token[0],0,priv,ffi.sizeof(priv),ffi.NULL,ffi.NULL
      C.CloseHandle token[0]

EnablePrivilege"SeBackupPrivilege"
EnablePrivilege"SeRestorePrivilege"
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Запрос дополнительных привилегий при поиске

Post by Shmuel »

zg

safe_cdef=(def)-> pcall ffi.cdef,def попроще будет, и только один параметр нужен.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Запрос дополнительных привилегий при поиске

Post by Denis »

А следующий баг куда писать - если с макросом http://forum.farmanager.com/viewtopic.p ... 66#p119866 зайти в "System Volume Information", сохранить настройки и перезапустить Far, то при следующем запуске на панели пустая "System Volume Information".
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Запрос дополнительных привилегий при поиске

Post by John Doe »

Denis
Не воспроизводится.

При следующем запуске макрос тоже присутствует?
Фар запускается с повышенными правами?

Что если всё то же самое проделать без макроса?
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Запрос дополнительных привилегий при поиске

Post by Denis »

Far x64. win7 sp1. В обоих случаях запускается под админом. Без макроса повторый запуск даёт те же результаты.
Last edited by Denis on Wed 18 Jun, 2014 07:35, edited 1 time in total.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Запрос дополнительных привилегий при поиске

Post by Denis »

Но вот если нажать CtrlR, то содержимое "System Volume Information" появляется (если макрос есть).
Post Reply

Return to “Обсуждение макросов”