Home
- Details
- Written by: po3dno
- Category: C#
- Hits: 995
using System;
using System.Management;
using System.Text.RegularExpressions;
using System.DirectoryServices;
namespace RemoveLocalAdm_PC
{
class Program
{
static void Main(string[] args)
{
string PC = System.Environment.MachineName;
string groupName = "local_administrator_" + PC;
string sid = "544";
ManagementObjectSearcher searchGroup = new ManagementObjectSearcher(@"SELECT name FROM Win32_Group where LocalAccount = true and sid = 'S-1-5-32-544'");
ManagementObjectCollection adminGroup = searchGroup.Get();
string gr = null;
/*
foreach (ManagementObject group in adminGroup)
{
gr = group["Name"].ToString();
//Console.WriteLine(group["Name"].ToString());
continue;
}
*/
if (gr != null)
{
ManagementObjectSearcher search = new ManagementObjectSearcher("SELECT * FROM Win32_GroupUser where (groupcomponent='win32_group.name=\"" + gr + "\",domain=\"" + PC + "\"')");
ManagementObjectCollection userList = search.Get();
foreach (ManagementObject user in userList)
{
string pattern = ".+cimv2:win32_(.+).Domain=\"(.+)\",Name=\"(.+)\"";
Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
Match m = Regex.Match(user["PartComponent"].ToString(), pattern, RegexOptions.IgnoreCase);
/*
if (m.Success)
{
//Console.WriteLine(m.Groups[1].Value + ' ' + m.Groups[2].Value + ' ' + m.Groups[3].Value);
}
*/
DirectoryEntry localGroup = new DirectoryEntry(String.Format("WinNT://{0}/{1},group", Environment.MachineName, gr));
DirectoryEntry removeobj = new DirectoryEntry(String.Format("WinNT://{0}/{1}", m.Groups[2].Value, m.Groups[3].Value));
Console.WriteLine(String.Format("WinNT://{0}/{1}", m.Groups[2].Value, m.Groups[3].Value));
if (m.Groups[2].Value == PC && (m.Groups[3].Value == "Администратор" || m.Groups[3].Value == "Administrator")) { continue; }
if (m.Groups[2].Value == "DOMAIN" && m.Groups[3].Value == "Workstation_admins") { continue; }
if (m.Groups[2].Value == "DOMAIN" && m.Groups[3].Value == groupName) { continue; }
try
{
localGroup.Invoke("Remove", new object[] { removeobj.Path });
localGroup.CommitChanges();
}
catch (Exception e)
{
Console.WriteLine("Try remove from group from: {0} group or user: {1}..." + Environment.NewLine + e.ToString(), gr, m.Groups[2].Value + @"\" + m.Groups[3].Value);
}
}
}
//Console.ReadLine();
}
}
}
- Details
- Written by: po3dno
- Category: Power Shell
- Hits: 974
$vhd = Get-ChildItem -Filter base* | Get-VHD
$curdisk = "e:\export\virtual hard disks\base-w2019en.vhdx";
function Get-ParentAVHDX {
param ($p);
$pp = $vhd | ?{$_.parentpath -eq $p};
if ($pp) {
Get-ParentAVHDX($pp.path);
write-host $pp.path $pp.parentpath;
Merge-VHD -Path $pp.Path -DestinationPath $pp.ParentPath -Verbose -WhatIf
}
}
Get-ParentAVHDX($curdisk)
- Details
- Written by: po3dno
- Category: MariaDB
- Hits: 944
ALTER TABLE e_5136_copy
REORGANIZE PARTITION p_future INTO (
PARTITION p_202201 VALUES LESS THAN (TO_DAYS('2022-02-01 00:00:00')),
PARTITION p_future VALUES LESS THAN MAXVALUE);
ALTER TABLE e_5136
REORGANIZE PARTITION p_future INTO (
PARTITION p_202201 VALUES LESS THAN (TO_DAYS('2022-02-01 00:00:00')),
PARTITION p_202202 VALUES LESS THAN (TO_DAYS('2022-03-01 00:00:00')),
PARTITION p_202203 VALUES LESS THAN (TO_DAYS('2022-04-01 00:00:00')),
PARTITION p_202204 VALUES LESS THAN (TO_DAYS('2022-05-01 00:00:00')),
PARTITION p_202205 VALUES LESS THAN (TO_DAYS('2022-06-01 00:00:00')),
PARTITION p_202206 VALUES LESS THAN (TO_DAYS('2022-07-01 00:00:00')),
PARTITION p_202207 VALUES LESS THAN (TO_DAYS('2022-08-01 00:00:00')),
PARTITION p_202208 VALUES LESS THAN (TO_DAYS('2022-09-01 00:00:00')),
PARTITION p_202209 VALUES LESS THAN (TO_DAYS('2022-10-01 00:00:00')),
PARTITION p_202210 VALUES LESS THAN (TO_DAYS('2022-11-01 00:00:00')),
PARTITION p_202211 VALUES LESS THAN (TO_DAYS('2022-12-01 00:00:00')),
PARTITION p_202212 VALUES LESS THAN (TO_DAYS('2023-01-01 00:00:00')),
PARTITION p_future VALUES LESS THAN MAXVALUE);
- Details
- Written by: po3dno
- Category: Power Shell
- Hits: 971
$account = "accountName"
$userRight = "SeServiceLogonRight*"
$code = (Start-Process secedit -ArgumentList "/export /areas USER_RIGHTS /cfg c:\policies.inf" -Wait -PassThru).ExitCode
if ($code -eq 0)
{
Write-Output "security template exported successfully exit code $code"
}
else
{
Write-Output "security template export failed exit code $code"
}
$sid = ((Get-LocalUser $account).SID).Value
$policy = Get-Content C:\policies.inf
$newpol = @()
foreach ($line in $policy)
{
if ($line -like $userRight)
{
$line = $line + ",*$sid"
}
$newpol += $line
}
$newpol | Out-File C:\policies.inf -Force
$code = (Start-Process secedit -ArgumentList "/configure /db secedit.sdb /cfg C:\policies.inf /areas USER_RIGHTS /log C:\policies.log" -Wait -PassThru).ExitCode
if ($code -eq 0)
{
Write-Output "exit code $code"
}
else
{
Write-Output "exit code $code"
}
Remove-Item -Path c:\policies.inf -Force
- Details
- Written by: po3dno
- Category: C#
- Hits: 996
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.DirectoryServices;
using System.Management;
using System.Threading;
namespace LocalGroup_AD
{
class Program
{
static void Main(string[] args)
{
string r = null;
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"))
{
ManagementObjectCollection information = searcher.Get();
if (information != null)
{
foreach (ManagementObject obj in information)
{
r = obj["ProductType"].ToString();
}
}
Console.WriteLine("ProductType: {0}", r);
}
string osType = null;
switch (r)
{
case "1": osType = "WKS"; break;
case "3": osType = "SRV"; break;
default:
Console.WriteLine("No valid input for osType");
Environment.Exit(0);
break;
}
//Console.ReadKey();
//Environment.Exit(0);
if (args.Count() != 1)
{
Console.WriteLine("Usage: LocalGroup_AD.exe [adm|rdu]");
Environment.Exit(0);
}
string PC = System.Environment.MachineName;
string sid = null;
string lGroup = null;
string groupName = null;
switch (args[0].ToLower())
{
case "adm": lGroup = "Administrators"; groupName = "local_administrator_" + PC; sid = "544"; break;
case "rdu": lGroup = "RDU"; groupName = "local_rdu_" + PC; sid = "555"; break;
default:
Console.WriteLine("No valid input for groupName");
Environment.Exit(0);
break;
}
DirectoryEntry dom = new DirectoryEntry();
string pathDN = "OU=" + lGroup + ",OU=" + osType + ",OU=LocalGroups,OU=Security Groups";
Console.WriteLine(pathDN);
DirectoryEntry ou = dom.Children.Find(pathDN);
bool groupName_exist = false;
try
{
DirectoryEntry childGroup = ou.Children.Find("CN=" + groupName);
if (childGroup != null)
groupName_exist = true;
}
catch { }
if (groupName_exist)
{
Console.WriteLine("Group {0} exist", groupName);
}
else
{
try
{
DirectoryEntry group = ou.Children.Add("CN=" + groupName, "group");
group.Properties["samAccountName"].Value = groupName;
group.CommitChanges();
}
catch (Exception e)
{
Console.WriteLine("Try add group to domain..." + Environment.NewLine + e.ToString());
}
}
ManagementObjectSearcher searchGroup = new ManagementObjectSearcher(@"SELECT name FROM Win32_Group where LocalAccount = true and sid = 'S-1-5-32-"+ sid +"'");
ManagementObjectCollection adminGroup = searchGroup.Get();
string gr = null;
foreach (ManagementObject group in adminGroup)
{
gr = group["Name"].ToString();
Console.WriteLine(group["Name"].ToString());
continue;
}
Thread.Sleep(10000);
DirectoryEntry localGroup = new DirectoryEntry(String.Format("WinNT://{0}/{1},group", Environment.MachineName, gr));
DirectoryEntry remoteGroup = new DirectoryEntry(String.Format("WinNT://{0}/{1}", Domain, groupName));
try
{
localGroup.Invoke("Add", new object[] { remoteGroup.Path });
localGroup.CommitChanges();
}
catch (Exception e)
{
Console.WriteLine("Try add group to local group..." + Environment.NewLine + e.ToString());
}
}
}
}