分类 笔记 下的文章

Chromium Post

var
  Header: ICefStringMultimap;
  Data: ICefPostData;
  Request: ICefRequest;begin
  Request := TCefRequestRef.New;
  Request.Url := 'http://example.com/';
  Request.Method := 'POST';
  Request.Flags := WUR_FLAG_NONE;

  Header := TCefStringMultimapOwn.Create;
  Header.Append('Content-Type', 'application/x-www-form-urlencoded');
  Request.SetHeaderMap(Header);

  Data := TCefPostDataRef.New;
  Data.AddElement(CreateField('Data.id=27'));
  Data.AddElement(CreateField('&Data.title=title'));
  Data.AddElement(CreateField('&Data.body=body'));
  Request.PostData := Data;

  Chromium1.Browser.MainFrame.LoadRequest(Request);end;


Delphi 获取Windows本地用户组和用户列表

头文件不全请加载    JEDI Windows Security Code Library 


{$POINTERMATH ON}
Function GetUserGroup():Integer;
Var
  szComputer:Array [0..MAXCHAR] Of WideChar;
  Buffer    :LPLOCALGROUP_INFO_1;
  nTotal    :DWORD;
  nEntries  :DWORD;
  hResume   :PDWORD_PTR;
  nCount    :DWORD;
  nStatus   :DWORD;
  dwPrefMax :DWORD;
  lpszStr   :Array [0..MAX_PATH] Of WideChar;
  iLen      :Integer;
  iFull     :Integer;
begin
  Result   := 0;
  nEntries := SizeOf(szComputer);
  GetComputerNameW(@szComputer, nEntries);
  nEntries   := 0;
  nTotal     := 0;
  Buffer     := Nil;
  dwPrefMax  := MAX_PREFERRED_LENGTH;
  hResume    := Nil;

  Writeln('User Group:', szComputer);
  nStatus    := NetLocalGroupEnum(szComputer, 0, PByte(Buffer), dwPrefMax, @nEntries, @nTotal, @hResume);
  if (nStatus = S_OK) Or (nStatus = ERROR_MORE_DATA) then
  begin
    for nCount := 0 to nTotal-1 do
    begin
      Inc(Result);
      if Buffer[nCount].lgrpi1_comment = Nil then Break;

      iLen := lstrlenW(Buffer[nCount].lgrpi1_comment);
      iFull:= 40 - Min(iLen, 32);
      ZeroMemory(@lpszStr, SizeOf(lpszStr));
      FillSpaces(@lpszStr, 10, True);

      lstrcatW(lpszStr, Buffer[nCount].lgrpi1_comment);
      FillSpaces(@lpszStr[iLen + 10], iFull, True);

      lstrcatW(lpszStr, Buffer[nCount].lgrpi1_name);

      Writeln(lpszStr);
    end;
  end;

  if Buffer <> Nil then
    NetApiBufferFree(Buffer);

  Writeln('.Done!, Total: ', Result);
end;


Function GetUsers():Integer;
Var
  szComputer:Array [0..MAXCHAR] Of WideChar;
  Buffer    :PUserInfo3;
  nTotal    :DWORD;
  nEntries  :DWORD;
  hResume   :PDWORD_PTR;
  nCount    :DWORD;
  dwPrefMax :DWORD;
  nStatus   :DWORD;
  lpszStr   :Array [0..MAX_PATH] Of WideChar;
begin
  Result   := 0;
  nEntries := SizeOf(szComputer);
  GetComputerNameW(@szComputer, nEntries);
  nEntries   := 0;
  nTotal     := 0;

  nEntries   := 0;
  nTotal     := 0;
  Buffer     := Nil;
  dwPrefMax  := MAX_PREFERRED_LENGTH;
  hResume    := Nil;

  Writeln('User Group:', szComputer);
  nStatus    := NetUserEnum(szComputer, 3, FILTER_NORMAL_ACCOUNT, PByte(Buffer), dwPrefMax, @nEntries, @nTotal, @hResume);
  if (nStatus = S_OK) Or (nStatus = ERROR_MORE_DATA) then
  begin
    for nCount := 0 to nTotal-1 do
    begin
      Inc(Result);
      if Buffer[nCount].usri3_name = Nil then
      begin
        if nCount < nTotal then
        begin
          Continue;
        end Else Break;
      end;

      ZeroMemory(@lpszStr, SizeOf(lpszStr));
      FillSpaces(@lpszStr, 10, True);
      lstrcatW(lpszStr, Buffer[nCount].usri3_name);
      Writeln(lpszStr, #13);

      ZeroMemory(@lpszStr, SizeOf(lpszStr));
      FillSpaces(@lpszStr, 15, True);
      lstrcatW(lpszStr, 'Remarks:');
      lstrcatW(lpszStr, Buffer[nCount].usri3_comment);
      Writeln(lpszStr);

      ZeroMemory(@lpszStr, SizeOf(lpszStr));
      FillSpaces(@lpszStr, 15, True);
      lstrcatW(lpszStr, 'Privilege:');
      if Buffer[nCount].usri3_priv = 0 then
      begin
        lstrcatW(lpszStr, 'Guest');
      end Else
      if Buffer[nCount].usri3_priv = 1 then
      begin
        lstrcatW(lpszStr, 'User');
      end Else
      if Buffer[nCount].usri3_priv = 2 then
      begin
        lstrcatW(lpszStr, 'Admin');
      end Else
      begin
        lstrcatW(lpszStr, 'UnKnown');
      end;
      Writeln(lpszStr);

      if (Buffer[nCount].usri3_script_path <> Nil) And (lstrlenW(Buffer[nCount].usri3_script_path) > 0) then
      begin
        ZeroMemory(@lpszStr, SizeOf(lpszStr));
        FillSpaces(@lpszStr, 15, True);
        lstrcatW(lpszStr, 'Login Script:');
        lstrcatW(lpszStr, Buffer[nCount].usri3_script_path);
        Writeln(lpszStr);
      end;
      Writeln('');
    end;
  end;
  if Buffer <> Nil then
    NetApiBufferFree(Buffer);

  Writeln('.Done!, Total: ', Result);
end;


PowerShell学习笔记(二) 通过远程执行命令

#启用远程 忽略网络类型 所有提示全Yes
Enable-PSRemoting -SkipNetworkProfileCheck -Force
#允许所有连入连接 PS:2端都需要执行
Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force


#新建Session
$Session = (Get-Credential)
#连接到虚拟机
$Connect = New-PSSession -ComputerName 192.168.1.2 -Credential $Session
#通过ICM执行CMD命令
ICM $Connect {ping qq.com}
#删除连接
Remove-PSSession -Session $Connect


PowerShell管理Hyper-V虚拟机学习笔记(一)

#新建虚拟机
#新建一个名称为Test 内存1G 硬盘大小为40Gb的一代Hyper-V虚拟机
$VM = New-VM –Name "Test" –MemoryStartupBytes 1GB -Generation 1 -NewVHDPath "D:\VM\Test.vhdx" -NewVHDSizeBytes 40GB
#设置虚拟机CPU为2核心
$VM | Set-VM -ProcessorCount 2 
#关闭虚脱机动态内存
$VM | Set-VMMemory -DynamicMemoryEnabled $False
#删除原有网卡
$VM | Remove-VMNetworkAdapter
#添加一个名称为 内网网卡 虚拟交换机为 VM_Lan 的网卡
$VM | Add-VMnetworkAdapter -Name "内网网卡" -SwitchName "VM_Lan"
#启用Vlan
$VM | Set-VMNetworkAdapterVlan –Access –VlanId 2
#添加一个名称为 外网网卡 虚拟交换机为 VM_Wan 的网卡
$VM | Add-VMnetworkAdapter -Name "外网网卡" -SwitchName "VM_Wan"


#查找已运行的虚拟机且名字包含Av_
$List = Get-VM | Where-Object {$_.State –eq 'Running'} | Where-Object {$_.Name -like 'AV_*'}

#启用联网网卡
foreach($I in $List) {
  Connect-VMNetworkAdapter -VMName $I.VMName -Name "外网网卡" -SwitchName "Wan"
}

#禁用联网网卡
foreach($I in $List) {
  Disconnect-VMNetworkAdapter -VMName $I.VMName -Name "外网网卡"
}

#删除所有已关机状态的虚拟机网卡
foreach($I in $List) {
    Remove-VMNetworkAdapter $I
}

#添加指定模式的双网卡
foreach($I in $List) {
    Add-VMnetworkAdapter $I -Name "内网网卡" -SwitchName "VM_Lan" 
    Set-VMNetworkAdapterVlan $I –Access –VlanId 2
    Add-VMnetworkAdapter $I -Name "外网网卡" -SwitchName "VM_Wan"
}

#启动虚拟机
$List = Get-VM | Where-Object {$_.State –eq 'Off'} | Where-Object {$_.Name -like 'AV_*'}
foreach($I in $List) {
    Start-VM -Name $I.VMName
}

#关闭虚拟机
$List = Get-VM | Where-Object {$_.State –eq 'Running'} | Where-Object {$_.Name -like 'AV_*'}
foreach($I in $List) {
    Stop-VM -Name $I.VMName
}


PEB For Delphi

Const
  GDI_HANDLE_BUFFER_SIZE32 = 34;
  GDI_HANDLE_BUFFER_SIZE64 = 60;
  FLS_MAXIMUM_AVAILABLE    = 128;
  FLS_MAXIMUM              =  FLS_MAXIMUM_AVAILABLE Div (SizeOf(ULONG) * 8);

Type
  UNICODE_STRING = Record
    Length        :USHORT;
    MaximumLength :USHORT;
    Buffer        :PWideChar;
  End;
  PUNICODE_STRING = ^UNICODE_STRING;

  ANSI_STRING = Record
    Length        :USHORT;
    MaximumLength :USHORT;
    Buffer        :PAnsiChar;
  End;

  _CURDIR = Record
    DosPath :UNICODE_STRING;
    Handle  :THandle;
  End;
  CURDIR  = _CURDIR;
  PCURDIR = ^_CURDIR;

  _RTL_DRIVE_LETTER_CURDIR = Record
    Flags     :USHORT;
    Length    :USHORT;
    TimeStamp :ULONG;
    DosPath   :ANSI_STRING;
  End;
  RTL_DRIVE_LETTER_CURDIR  = _RTL_DRIVE_LETTER_CURDIR;
  PRTL_DRIVE_LETTER_CURDIR = ^_RTL_DRIVE_LETTER_CURDIR;

  _PEB_LDR_DATA = Record
    Length                          :ULONG;
    Initialized                     :Boolean;
    SsHandle                        :THandle;
    InLoadOrderModuleList           :TListEntry;
    InMemoryOrderModuleList         :TListEntry;
    InInitializationOrderModuleList :TListEntry;
    EntryInProgress                 :Pointer;
    ShutdownInProgress              :Boolean;
    ShutdownThreadId                :THandle;
  End;
  TPEB_LDR_DATA = _PEB_LDR_DATA;
  PEB_LDR_DATA  = _PEB_LDR_DATA;
  PPEB_LDR_DATA = ^_PEB_LDR_DATA;

  _RTL_USER_PROCESS_PARAMETERS = Record
    MaximumLength      :ULONG;
    Length             :ULONG;
    Flags              :ULONG;
    DebugFlags         :ULONG;
    ConsoleHandle      :THandle;
    ConsoleFlags       :ULONG;
    StandardInput      :THandle;
    StandardOutput     :THandle;
    StandardError      :THandle;
    CurrentDirectory   :CURDIR;
    DllPath            :UNICODE_STRING;
    ImagePathName      :UNICODE_STRING;
    CommandLine        :UNICODE_STRING;
    Environment        :Pointer;
    StartingX          :ULONG;
    StartingY          :ULONG;
    CountX             :ULONG;
    CountY             :ULONG;
    CountCharsX        :ULONG;
    CountCharsY        :ULONG;
    FillAttribute      :ULONG;
    WindowFlags        :ULONG;
    ShowWindowFlags    :ULONG;
    WindowTitle        :UNICODE_STRING;
    DesktopInfo        :UNICODE_STRING;
    ShellInfo          :UNICODE_STRING;
    RuntimeData        :UNICODE_STRING;
    CurrentDirectories :Array [0..31] Of RTL_DRIVE_LETTER_CURDIR;
    EnvironmentSize    :ULONG;
    EnvironmentVersion :ULONG;
  End;
  RTL_USER_PROCESS_PARAMETERS  = _RTL_USER_PROCESS_PARAMETERS;
  TRTL_USER_PROCESS_PARAMETERS = _RTL_USER_PROCESS_PARAMETERS;
  PRTL_USER_PROCESS_PARAMETERS = ^_RTL_USER_PROCESS_PARAMETERS;

  PPS_POST_PROCESS_INIT_ROUTINE = Pointer;
  PRTL_CRITICAL_SECTION = PRTLCriticalSection;

  GDI_HANDLE_BUFFER32 = Array [0..GDI_HANDLE_BUFFER_SIZE32-1] Of ULONG;
  GDI_HANDLE_BUFFER64 = Array [0..GDI_HANDLE_BUFFER_SIZE64-1] Of ULONG;
  {$IFDEF WIN64}
  GDI_HANDLE_BUFFER = GDI_HANDLE_BUFFER64;
  {$ELSE}
  GDI_HANDLE_BUFFER = GDI_HANDLE_BUFFER32;
  {$ENDIF}

  _PEB = Record
    InheritedAddressSpace      :Boolean;
    ReadImageFileExecOptions   :Boolean;
    BeingDebugged              :Boolean;
    BitField                   :Boolean;
    Mutant                     :THandle;
    ImageBaseAddress           :Pointer;
    Ldr                        :PPEB_LDR_DATA;
    ProcessParameters          :PRTL_USER_PROCESS_PARAMETERS;
    SubSystemData              :Pointer;
    ProcessHeap                :Pointer;
    FastPebLock                :PRTL_CRITICAL_SECTION;
    AtlThunkSListPtr           :Pointer;
    IFEOKey                    :Pointer;
    CrossProcessFlags          :ULONG;
    EnvironmentUpdateCount     :ULONG;
    KernelCallbackTable        :Pointer;
    SystemReserved             :Array [0..0] Of ULONG;
    AtlThunkSListPtr32         :ULONG;
    ApiSetMap                  :Pointer;
    TlsExpansionCounter        :ULONG;
    TlsBitmap                  :Pointer;
    TlsBitmapBits              :Array [0..1] Of ULONG;
    ReadOnlySharedMemoryBase   :Pointer;
    HotpatchInformation        :Pointer;
    ReadOnlyStaticServerData   :PPointer;
    AnsiCodePageData           :Pointer;
    OemCodePageData            :Pointer;
    UnicodeCaseTableData       :Pointer;
    NumberOfProcessors         :ULONG;
    NtGlobalFlag               :ULONG;
    CriticalSectionTimeout     :LARGE_INTEGER;
    HeapSegmentReserve         :SIZE_T;
    HeapSegmentCommit          :SIZE_T;
    HeapDeCommitTotalFreeThreshold   :SIZE_T;
    HeapDeCommitFreeBlockThreshold   :SIZE_T;
    NumberOfHeaps              :ULONG;
    MaximumNumberOfHeaps       :ULONG;
    ProcessHeaps               :PPointer;
    GdiSharedHandleTable       :Pointer;
    ProcessStarterHelper       :Pointer;
    GdiDCAttributeList         :ULONG;
    LoaderLock                 :PRTL_CRITICAL_SECTION;
    OSMajorVersion             :ULONG;
    OSMinorVersion             :ULONG;
    OSBuildNumber              :USHORT;
    OSCSDVersion               :USHORT;
    OSPlatformId               :ULONG;
    ImageSubsystem             :ULONG;
    ImageSubsystemMajorVersion :ULONG;
    ImageSubsystemMinorVersion :ULONG;
    ImageProcessAffinityMask   :ULONG_PTR;
    GdiHandleBuffer            :GDI_HANDLE_BUFFER;
    PostProcessInitRoutine     :Pointer;
    TlsExpansionBitmap         :Pointer;
    TlsExpansionBitmapBits     :Array [0..31] Of ULONG;
    SessionId                  :ULONG;
    AppCompatFlags             :ULARGE_INTEGER;
    AppCompatFlagsUser         :ULARGE_INTEGER;
    pShimData                  :Pointer;
    AppCompatInfo              :Pointer;
    CSDVersion                 :UNICODE_STRING;
    ActivationContextData      :Pointer;
    ProcessAssemblyStorageMap  :Pointer;
    SystemDefaultActivationContextData  :Pointer;
    SystemAssemblyStorageMap   :Pointer;
    MinimumStackCommit         :SIZE_T;
    FlsCallback                :PPointer;
    FlsListHead                :TListEntry;
    FlsBitmap                  :Pointer;
    FlsBitmapBits              :Array [0..FLS_MAXIMUM-1] Of ULONG;
    FlsHighIndex               :ULONG;
    WerRegistrationData        :Pointer;
    WerShipAssertPtr           :Pointer;
    pContextData               :Pointer;
    pImageHeaderHash           :Pointer;
    TracingFlags               :ULONG;
    SpareTracingBits           :ULONG;
  End;
  TPEB = _PEB;
  PPEB = ^_PEB;

  _LDR_DATA_TABLE_ENTRY_COMPATIBLE = Record
    InLoadOrderLinks           :TListEntry;
    InMemoryOrderLinks         :TListEntry;
    InInitializationOrderLinks :TListEntry;
    DllBase                    :Pointer;
    EntryPoint                 :Pointer;
    SizeOfImage                :ULONG;
    FullDllName                :UNICODE_STRING;
    BaseDllName                :UNICODE_STRING;
    Flags                      :ULONG;
    ObsoleteLoadCount          :Word;
    TlsIndex                   :Word;
    HashLinks                  :TListEntry;
    TimeDateStamp              :ULONG;
  End;
  LDR_DATA_TABLE_ENTRY_COMPATIBLE = _LDR_DATA_TABLE_ENTRY_COMPATIBLE;
  LDR_DATA_TABLE_ENTRY = _LDR_DATA_TABLE_ENTRY_COMPATIBLE;
  PLDR_DATA_TABLE_ENTRY = ^_LDR_DATA_TABLE_ENTRY_COMPATIBLE;
  LdrModule  = _LDR_DATA_TABLE_ENTRY_COMPATIBLE;
  PLdrModule = ^LdrModule;