public List<string> WMIGetPrinterList(string pcname)
{
string query = "Select * from Win32_Printer";
pcname = CleanPCName(pcname);
StringBuilder queryResult = new StringBuilder();
List<string> resultList = new List<string>();
if (PcNameIsNotNullOrVoid(pcname))
{
try
{
ManagementScope scope = new ManagementScope(backslashes + pcname + @"\root\cimv2");
scope.Connect();
ObjectQuery obquery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, obquery);
foreach (ManagementObject obj in searcher.Get())
{
try
{
resultList.Add("Name: " + obj["Name"].ToString());
resultList.Add("Port: " + obj["PortName"].ToString());
resultList.Add("DeviceID: " + obj["DeviceID"].ToString());
resultList.Add("DriverName: " + obj["DriverName"].ToString());
if (obj["Shared"].ToString().Equals(true.ToString()))
{
resultList.Add("Share Name: " + obj["ShareName"].ToString());
}
//resultList.Add("Status: " + obj["Status"].ToString());
//resultList.Add("Printer Status: " + obj["PrinterStatus"].ToString());
//resultList.Add("Printer State: " + obj["PrinterState"].ToString());
//int state = Int32.Parse(obj["ExtendedPrinterStatus"].ToString());
//switch (state)
//{
// case 1: //Other
// resultList.Add("Other");
// break;
// case 2: //Unknown
// resultList.Add("Unknown 2");
// break;
// case 7: //Offline
// resultList.Add("Offline");
// break;
// case 9: //error
// resultList.Add("Error");
// break;
// case 11: //Not Available
// break;
// default:
// resultList.Add("None of the above.");
// break;
//}
resultList.Add("");
}
catch
{
resultList.Add("Unknown");
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
//resultList.Sort();
return resultList;
}
//Deletes the printer
public void WMIDeletePrinter(string pcname, string printerName)
{
try
{
if (PcNameIsNotNullOrVoid(pcname) && !string.IsNullOrEmpty(printerName))
{
string query = @"SELECT * FROM Win32_Printer WHERE Name = '" + printerName.Replace("\\", "\\\\") + "'";
pcname = CleanPCName(pcname);
ManagementScope scope = new ManagementScope(backslashes + pcname + @"\root\cimv2");
scope.Connect();
SelectQuery obquery = new SelectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, obquery);
ManagementObjectCollection oObjectCollection = searcher.Get();
if (oObjectCollection.Count > 0)
{
foreach (ManagementObject oItem in oObjectCollection)
{
oItem.Delete();
MessageBox.Show(oItem["Name"].ToString() + " deleted.");
}
}
else
{
MessageBox.Show("Printer not Found");
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
Thursday, October 15, 2015
List and Delete printers with WMI and .NET
Works, but looks like it was a work in progress I never completely finished.
Get currently logged in user with WMI and .NET
public List<string> WMIGetLoggedOnUser(string pcname)
{
string query = "select UserName from Win32_ComputerSystem";
pcname = CleanPCName(pcname);
StringBuilder queryResult = new StringBuilder();
List<string> resultList = new List<string>();
try
{
ManagementScope scope = new ManagementScope(backslashes + pcname + @"\root\cimv2");
scope.Connect();
ObjectQuery obquery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, obquery);
foreach (ManagementObject obj in searcher.Get())
{
try
{
resultList.Add(obj["UserName"].ToString());
}
catch
{
resultList.Add("Unknown");
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
resultList.Sort();
return resultList;
}
Get service tag on a Dell machine in WMI and .NET
public List<string> WMIGetServiceTag(string pcname)
{
string query = "Select * from Win32_SystemEnclosure";
pcname = CleanPCName(pcname);
StringBuilder queryResult = new StringBuilder();
List<string> resultList = new List<string>();
try
{
ManagementScope scope = new ManagementScope(backslashes + pcname + @"\root\cimv2");
scope.Connect();
ObjectQuery obquery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, obquery);
foreach (ManagementObject obj in searcher.Get())
{
try
{
resultList.Add(obj["SerialNumber"].ToString());
}
catch
{
resultList.Add("Unknown");
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
resultList.Sort();
return resultList;
}
Getting Installed software and hotfixes remotely in .NET with WMI
public List<string> WMIGetInstalledSoftware(string pcname)
{
string query = "select Name from win32_product";
pcname = CleanPCName(pcname);
StringBuilder queryResult = new StringBuilder();
List<string> resultList = new List<string>();
try
{
ManagementScope scope = new ManagementScope(backslashes + pcname + @"\root\cimv2");
scope.Connect();
ObjectQuery obquery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, obquery);
foreach (ManagementObject obj in searcher.Get())
{
try
{
resultList.Add(obj["Name"].ToString());
}
catch
{
resultList.Add("Unknown");
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
resultList.Sort();
return resultList;
}
public List<string> WMIGetHotfixes(string pcname)
{
string query = "select HotFixID from Win32_QuickFixEngineering";
pcname = CleanPCName(pcname);
StringBuilder queryResult = new StringBuilder();
List<string> resultList = new List<string>();
try
{
ManagementScope scope = new ManagementScope(backslashes + pcname + @"\root\cimv2");
scope.Connect();
ObjectQuery obquery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, obquery);
foreach (ManagementObject obj in searcher.Get())
{
try
{
if (!obj["HotFixID"].Equals(null))
{
if (!obj["HotFixID"].ToString().Contains("File 1"))
{
resultList.Add(obj["HotFixID"].ToString());
}
}
}
catch
{
resultList.Add("Unknown");
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
resultList.Sort();
return resultList;
}
Get Mapped drives remotely in .NET with WMI
public List<string> GetMappedDrives(string pcname)
{
pcname = CleanPCName(pcname);
List<string> resultList = WMIGetMappedDrives(pcname);
List<string> resultList2 = RegGetMappedDrives(pcname);
resultList.Add("");
List<string> combinedList = new List<string>();
combinedList.AddRange(resultList);
combinedList.AddRange(resultList2);
return combinedList;
}
private List<string> WMIGetMappedDrives(string pcname)
{
List<string> resultList = new List<string>();
string query = "Select * from Win32_MappedLogicalDisk";
StringBuilder queryResult = new StringBuilder();
try
{
ManagementScope scope = new ManagementScope(backslashes + pcname + @"\root\cimv2");
scope.Connect();
ObjectQuery obquery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, obquery);
foreach (ManagementObject obj in searcher.Get())
{
try
{
resultList.Add(obj["Name"].ToString() + " " + obj["ProviderName"]);
}
catch
{
resultList.Add("Unknown");
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
//resultList.Sort();
return resultList;
}
private List<string> RegGetMappedDrives(string pcname)
{
string sid = WmiGetUserSID(pcname, WmiGetExplorerProcessOwner(pcname));
pcname = CleanPCName(pcname);
RegistryKey regKey;
StringBuilder queryResult = new StringBuilder();
List<string> resultList = new List<string>();
try
{
regKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.Users, pcname).OpenSubKey(sid + @"\\Network");
//PrintKeys(rk);
foreach (string subKeyName in regKey.GetSubKeyNames())
{
try
{
string strPath = regKey.OpenSubKey(subKeyName).GetValue("RemotePath").ToString();
resultList.Add(subKeyName + ": " + strPath);
}
catch
{
resultList.Add("Unknown");
}
}
regKey.Close();
resultList.Sort();
regKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.Users, pcname).OpenSubKey(sid + @"\\Volatile Environment");
resultList.Add(regKey.GetValue("HOMEDRIVE").ToString() + " " + regKey.GetValue("HOMESHARE").ToString() + " (HOMEDRIVE setting)");
regKey.Close();
}
catch //(Exception e)
{
//MessageBox.Show(e.GetType().Name + ": " + e.Message);
resultList.Add("");
}
return resultList;
}
private string WmiGetUserSID(string pcname, string domainBslashAccount)
{
string domain, user;
domain = domainBslashAccount.Substring(0, domainBslashAccount.IndexOf(@"\"));
user = domainBslashAccount.Substring(domainBslashAccount.IndexOf(@"\") + 1);
//string query = "Select * from Win32_UserAccount" + " Where Name='hadye' and Domain='domain'";
string query = "Select * from Win32_UserAccount" + " Where Name='" + user + "' and Domain='" + domain + "'";
ManagementScope scope = new ManagementScope(backslashes + pcname + @"\root\cimv2");
string sid = "unknown";
StringBuilder queryResult = new StringBuilder();
List<string> resultList = new List<string>();
pcname = CleanPCName(pcname);
try
{
scope.Connect();
ObjectQuery obquery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, obquery);
foreach (ManagementObject obj in searcher.Get())
{
try
{
sid = obj["SID"].ToString();
return sid;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return sid;
}
}
return sid;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return "SID unknown";
}
}
private string WmiGetExplorerProcessOwner(string pcname)
{
string query = "Select * from Win32_Process" + " Where Name='explorer.exe'"; // and SessionID=0"; sessionid=0 is not correct on widnows7
ManagementScope scope = new ManagementScope(backslashes + pcname + @"\root\cimv2");
StringBuilder queryResult = new StringBuilder();
List<string> resultList = new List<string>();
pcname = CleanPCName(pcname);
try
{
scope.Connect();
ObjectQuery obquery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, obquery);
//MessageBox.Show(searcher.Get().Count.ToString());
if (searcher.Get().Count >= 0)
{
ManagementObjectCollection processList = searcher.Get();
foreach (ManagementObject obj in processList)
{
string[] argList = new string[] { string.Empty, string.Empty };
int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
if (returnVal == 0)
{
// return DOMAIN\user
string owner = argList[1] + "\\" + argList[0];
return owner;
}
}
}
else
{
return @"localhost\administrator";
}
return @"localhost\administrator";
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return @"localhost\administrator";
}
}
Thursday, August 27, 2015
BASH SSH Key Scripts for authorized_keys
Replace all instances of "user" with a variable and set to correct username.
Delete a Key from authorized_keys
Delete a Key from authorized_keys
#!/bin/bash
#/usr/local/bin/delete_key
echo " "
echo " "
echo " "
echo "current number of keys before deletion: " $(cat /home/user/.ssh/authorized_keys |wc -l)
echo " "
echo "Backing up keys..."
cp -fv /home/user/.ssh/authorized_keys /home/user/.ssh/authorized_keys.$(date +%Y.%m.%d)
echo " "
if [ $1 ]; then
keytodelete=$1
if [ ${#keytodelete} -gt 4 ]; then
keys=$(cat /home/user/.ssh/authorized_keys |grep $keytodelete |awk '{print $3}')
echo "key(s) will be deleted: " $keys
echo " "
if [ $2 ]; then
if [ $2 == "yes" ]; then
sed -i /$1/d /home/user/.ssh/authorized_keys;
echo "current number of keys after deletion: " $(cat /home/user/.ssh/authorized_keys |wc -l)
fi
else
echo "The above keys will be deleted, if this is what you want run again with 'yes' as your second argument"
fi
fi
else
echo "Key you want to delete must be at least 5 chars..."
echo "Syntax: delete_key npp56"
fi
Backup Keys
#!/bin/bash
#/usr/local/bin/backup_keys
echo "current number of keys: " $(cat /home/user/.ssh/authorized_keys |wc -l)
cp -fv /home/user/.ssh/authorized_keys /home/user/.ssh/authorized_keys.$(date +%Y.%m.%d)
Show Keys
#!/bin/bash
#/usr/local/bin/show_keys
echo "current number of keys: " $(cat /home/user/.ssh/authorized_keys| wc -l)
echo " "
echo " "
echo "SSH Keys:"
echo " "
cat /home/user/.ssh/authorized_keys |awk '{print $3}'
echo " "
echo " "
Monday, April 20, 2015
Changelog
----------
2015.4.20
Added Tools -> System Tools -> Remote Command Line
(Brings up an interactive dos command line on remote pc)
Subscribe to:
Posts (Atom)