-
Notifications
You must be signed in to change notification settings - Fork 0
/
WMI.linq
140 lines (118 loc) · 4.81 KB
/
WMI.linq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<Query Kind="Program">
<Reference>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Management.dll</Reference>
<Reference>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Management.Instrumentation.dll</Reference>
<Namespace>System.Management</Namespace>
</Query>
void Main()
{
var isAdded = PrinterSettings.AddPrinter("UPSTAIRS-OFFICE");
isAdded.Dump();
}
// You can define other methods, fields, classes and namespaces here
class PrinterSettings
{
private static ManagementScope oManagementScope = null;
//Adds the Printer
public static bool AddPrinter(string sPrinterName)
{
try
{
oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
oManagementScope.Connect();
ManagementClass oPrinterClass = new ManagementClass(new ManagementPath("Win32_Printer"), null);
ManagementBaseObject oInputParameters = oPrinterClass.GetMethodParameters("AddPrinterConnection");
oInputParameters.SetPropertyValue("Name", sPrinterName);
oPrinterClass.InvokeMethod("AddPrinterConnection", oInputParameters, null);
return true;
}
catch (Exception ex)
{
return false;
}
}
//Deletes the printer
public static bool DeletePrinter(string sPrinterName)
{
oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
oManagementScope.Connect();
SelectQuery oSelectQuery = new SelectQuery();
oSelectQuery.QueryString = @"SELECT * FROM Win32_Printer WHERE Name = '" + sPrinterName.Replace("\\", "\\\\") + "'";
ManagementObjectSearcher oObjectSearcher = new ManagementObjectSearcher(oManagementScope, oSelectQuery);
ManagementObjectCollection oObjectCollection = oObjectSearcher.Get();
if (oObjectCollection.Count != 0)
{
foreach (ManagementObject oItem in oObjectCollection)
{
oItem.Delete();
return true;
}
}
return false;
}
//Renames the printer
public static void RenamePrinter(string sPrinterName, string newName)
{
oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
oManagementScope.Connect();
SelectQuery oSelectQuery = new SelectQuery();
oSelectQuery.QueryString = @"SELECT * FROM Win32_Printer WHERE Name = '" + sPrinterName.Replace("\\", "\\\\") + "'";
ManagementObjectSearcher oObjectSearcher = new ManagementObjectSearcher(oManagementScope, oSelectQuery);
ManagementObjectCollection oObjectCollection = oObjectSearcher.Get();
if (oObjectCollection.Count != 0)
{
foreach (ManagementObject oItem in oObjectCollection)
{
oItem.InvokeMethod("RenamePrinter", new object[] { newName });
return;
}
}
}
//Sets the printer as Default
public static void SetDefaultPrinter(string sPrinterName)
{
oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
oManagementScope.Connect();
SelectQuery oSelectQuery = new SelectQuery();
oSelectQuery.QueryString = @"SELECT * FROM Win32_Printer WHERE Name = '" + sPrinterName.Replace("\\", "\\\\") + "'";
ManagementObjectSearcher oObjectSearcher = new ManagementObjectSearcher(oManagementScope, oSelectQuery);
ManagementObjectCollection oObjectCollection = oObjectSearcher.Get();
if (oObjectCollection.Count != 0)
{
foreach (ManagementObject oItem in oObjectCollection)
{
oItem.InvokeMethod("SetDefaultPrinter", new object[] { sPrinterName });
return;
}
}
}
//Gets the printer information
public static void GetPrinterInfo(string sPrinterName)
{
oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
oManagementScope.Connect();
SelectQuery oSelectQuery = new SelectQuery();
oSelectQuery.QueryString = @"SELECT * FROM Win32_Printer WHERE Name = '" + sPrinterName.Replace("\\", "\\\\") + "'";
ManagementObjectSearcher oObjectSearcher = new ManagementObjectSearcher(oManagementScope, @oSelectQuery);
ManagementObjectCollection oObjectCollection = oObjectSearcher.Get();
foreach (ManagementObject oItem in oObjectCollection)
{
Console.WriteLine("Name : " + oItem["Name"].ToString());
Console.WriteLine("PortName : " + oItem["PortName"].ToString());
Console.WriteLine("DriverName : " + oItem["DriverName"].ToString());
Console.WriteLine("DeviceID : " + oItem["DeviceID"].ToString());
Console.WriteLine("Shared : " + oItem["Shared"].ToString());
Console.WriteLine("---------------------------------------------------------------");
}
}
//Checks whether a printer is installed
public bool IsPrinterInstalled(string sPrinterName)
{
oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
oManagementScope.Connect();
SelectQuery oSelectQuery = new SelectQuery();
oSelectQuery.QueryString = @"SELECT * FROM Win32_Printer WHERE Name = '" + sPrinterName.Replace("\\", "\\\\") + "'";
ManagementObjectSearcher oObjectSearcher = new ManagementObjectSearcher(oManagementScope, oSelectQuery);
ManagementObjectCollection oObjectCollection = oObjectSearcher.Get();
return oObjectCollection.Count > 0;
}
}