RinniX писал(а):
Спасибо! Сколько с меня пива пиши в ЛС! )------------ Дoбавленo в 10.20:
кстати не во всех случая нужны права администратора, достаточно знать о необходимых привилегиях юзера, вот это даёт список привилегий
Add(MainForm,2953706,217,231)
{
Width=592
Height=424
Position=1
link(onCreate,11047373:GetUserPrivilege,[])
}
Add(InlineCode,11047373,273,245)
{
WorkPoints=#16:GetUserPrivilege|
EventPoints=#6:onList|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,windows,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|22: onList:THI_Event;|56: procedure GetUserPrivilege(var dt:TData; idx:word);|0:|5: end;|0:|14:implementation|0:|39:procedure THiAsmClass.GetUserPrivilege;|6: const|49: TokenSize = 800; // (SizeOf(Pointer)=4 *200) |3:var|19: hToken: THandle;|32: pTokenInfo: PTOKENPRIVILEGES;|23: ReturnLen: Cardinal;|14: i: Integer;|19: PrivName: PChar;|22: DisplayName: PChar;|22: NameSize: Cardinal;|23: DisplSize: Cardinal;|20: LangId: Cardinal;|6: begin|33: GetMem(pTokenInfo, TokenSize);|87: if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,|56: hToken) then ShowMessage('OpenProcessToken error');|93: if not GetTokenInformation(hToken, TokenPrivileges, pTokenInfo, TokenSize, ReturnLen) then|46: ShowMessage('GetTokenInformation error');|25: GetMem(PrivName, 255);|28: GetMem(DisplayName, 255);|48: for i := 0 to pTokenInfo.PrivilegeCount -1 do|8: begin|22: DisplSize := 255;|22: NameSize := 255;|81: LookupPrivilegeName(nil, pTokenInfo.Privileges[i].Luid, PrivName, Namesize);|79: LookupPrivilegeDisplayName(nil, PrivName, DisplayName, DisplSize, LangId);|54: //ListBox1.Items.Add(PrivName +^I + DisplayName);|55: _hi_onEvent(onList, (PrivName +';'+ DisplayName));|7: end;|21: FreeMem(PrivName);|24: FreeMem(DisplayName);|23: FreeMem(pTokenInfo);|5: end;|0:|4:end.|
link(onList,10009289:doAdd,[])
}
Add(StringTable,10009289,336,245)
{
Left=100
Top=10
Width=475
Height=380
Align=5
Columns=#14:Привилегия=200|14:Коментарий=300|
}