Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Configuration Managerben egy információs (.inf) fájlban leírt Windows-illesztőprogramot a CreateFromINF metódussal importálhat az SMS_Driver osztályban.
Windows-illesztőprogram importálása
Állítson be egy kapcsolatot az SMS-szolgáltatóval. További információ: Az SMS-szolgáltató alapjai.
Hívja meg a CreateFromINF metódust az SMS_Driver osztályban a kezdeti SMS_Driver kiszolgálói WMI-osztálykezelési alapobjektum lekéréséhez.
Hozzon létre egy SMS_Driver-példányt a felügyeleti alapobjektum használatával.
Töltse ki az
SMS_Driver
objektumot.Véglegesítse az
SMS_Driver
objektumot.
Példa
Az alábbi példametódus egy SMS_Driver
objektumot hoz létre egy Windows-illesztőprogramhoz a megadott elérési út és fájlnév használatával. A példa azt is lehetővé teszi az illesztő számára, hogy a tulajdonság értékét értékre IsEnabled
true
állítja. A segédfüggvénnyel GetDriverName
lekérhető az illesztőprogram neve az illesztőprogram-csomag XML-fájljából.
Megjegyzés:
A path
paramétert univerzális elnevezési konvenció (UNC) hálózati elérési útként kell megadni, például: \\localhost\Drivers\ATIVideo\.
A példában a LocaleID
tulajdonság angol (USA) kódolású. Ha nem egyesült államokbeli területi beállításra van szüksége telepítéseket, a SMS_Identification kiszolgálói WMI-osztályLocaleID
tulajdonságból szerezheti be.
A mintakód meghívásával kapcsolatos információkért lásd: A Configuration Manager kódrészleteinek meghívása.
Sub ImportINFDriver(connection, path, name)
Dim driverClass
Dim inParams
Dim outParams
On Error Resume Next
' Obtain an instance of the class
' using a key property value.
Set driverClass = connection.Get("SMS_Driver")
' Obtain an InParameters object specific
' to the method.
Set inParams = driverClass.Methods_("CreateFromINF"). _
inParameters.SpawnInstance_()
' Add the input parameters.
inParams.Properties_.Item("DriverPath") = path
inParams.Properties_.Item("INFFile") = name
' Call the method.
' The OutParameters object in outParams
' is created by the provider.
Set outParams = connection.ExecMethod("SMS_Driver", "CreateFromINF", inParams)
If Err <> 0 Then
Wscript.Echo "Failed to add to the driver catalog: " + path + "\" + name
Exit Sub
End If
outParams.Driver.IsEnabled = True
Dim LocalizedSettings(0)
Set LocalizedSettings(0) = connection.Get("SMS_CI_LocalizedProperties").SpawnInstance_()
LocalizedSettings(0).Properties_.item("LocaleID") = 1033
LocalizedSettings(0).Properties_.item("DisplayName") = _
GetDriverName(outParams.Driver.SDMPackageXML, "//DisplayName", "Text")
LocalizedSettings(0).Properties_.item("Description") = ""
outParams.Driver.LocalizedInformation = LocalizedSettings
' Save the driver.
outParams.Driver.Put_
End Sub
Function GetDriverName(xmlContent, nodeName, attributeName)
' Load the XML Document
Dim attrValue
Dim XMLDoc
Dim objNode
Dim displayNameNode
attrValue = ""
Set XMLDoc = CreateObject("Microsoft.XMLDOM")
XMLDoc.async = False
XMLDoc.loadXML(xmlContent)
'Check for a successful load of the XML Document.
If xmlDoc.parseError.errorCode <> 0 Then
WScript.Echo vbcrlf & "Error loading XML Document. Error Code : 0x" & hex(xmldoc.parseerror.errorcode)
WScript.Echo "Reason: " & xmldoc.parseerror.reason
WScript.Echo "Parse Error line " & xmldoc.parseError.line & ", character " & _
xmldoc.parseError.linePos & vbCrLf & xmldoc.parseError.srcText
GetXMLAttributeValue = ""
Else
' Select the node
Set objNode = xmlDoc.SelectSingleNode(nodeName)
If Not objNode Is Nothing Then
' Found the element, now just pick up the Text attribute value
Set displayNameNode = objNode.attributes.getNamedItem(attributeName)
If Not displayNameNode Is Nothing Then
attrValue = displayNameNode.value
Else
WScript.Echo "Attribute not found"
End If
Else
WScript.Echo "Failed to locate " & nodeName & " element."
End If
End If
' Save the results
GetDriverName = attrValue
End Function
public void ImportInfDriver(
WqlConnectionManager connection,
string path,
string name)
{
try
{
Dictionary<string, object> inParams = new Dictionary<string, object>();
// Set up parameters for the path and file name.
inParams.Add("DriverPath", path);
inParams.Add("INFFile", name);
// Import the INF file.
IResultObject result = connection.ExecuteMethod("SMS_Driver", "CreateFromINF", inParams);
// Create the SMS_Driver driver instance from the management base object returned in result["Driver"].
IResultObject driver = connection.CreateInstance(result["Driver"].ObjectValue);
// Enable the driver.
driver["IsEnabled"].BooleanValue = true;
List<IResultObject> driverInformationList = driver.GetArrayItems("LocalizedInformation");
// Set up the display name and other information.
IResultObject driverInfo = connection.CreateEmbeddedObjectInstance("SMS_CI_LocalizedProperties");
driverInfo["DisplayName"].StringValue = GetDriverName(driver);
driverInfo["LocaleID"].IntegerValue = 1033;
driverInfo["Description"].StringValue = "";
driverInformationList.Add(driverInfo);
driver.SetArrayItems("LocalizedInformation", driverInformationList);
// Commit the SMS_Driver object.
driver.Put();
}
catch (SmsException e)
{
Console.WriteLine("Failed to import driver: " + e.Message);
throw;
}
}
public string GetDriverName(IResultObject driver)
{
// Extract
XmlDocument sdmpackage = new XmlDocument();
sdmpackage.LoadXml(driver.Properties["SDMPackageXML"].StringValue);
// Iterate over all the <DisplayName/> tags.
foreach (XmlNode displayName in sdmpackage.GetElementsByTagName("DisplayName"))
{
// Grab the first one with a Text attribute not equal to null.
if (displayName != null && displayName.Attributes["Text"] != null
&& !string.IsNullOrEmpty(displayName.Attributes["Text"].Value))
{
// Return the DisplayName text.
return displayName.Attributes["Text"].Value;
}
}
// Default the driverName to the UniqueID.
return driver["CI_UniqueID"].StringValue;
}
A példametódus a következő paraméterekkel rendelkezik:
Paraméter | Típus | Leírás |
---|---|---|
connection |
-Kezelt: WqlConnectionManager - VBScript: SWbemServices |
Érvényes kapcsolat az SMS-szolgáltatóval. |
path |
-Kezelt: String - VBScript: String |
Érvényes UNC hálózati elérési út az illesztőprogram tartalmát tartalmazó mappához. Például: \\Servers\Driver\VideoDriver. |
name |
-Kezelt: String - VBScript: String |
Az .inf fájl neve. Például: ATI.inf. |
A kód fordítása
Ehhez a C#-példához a következőre van szükség:
Névterek
Rendszer
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Összeszerelés
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robusztus programozás
További információ a hibakezelésről: Tudnivalók a Configuration Manager hibáiról.
.NET-keretrendszer biztonsága
További információ a Configuration Manager-alkalmazások biztonságossá tételéről: Configuration Manager szerepköralapú felügyelet.
Lásd még
CreateFromINF metódus a SMS_Driver osztályban
SMS_Driver kiszolgálói WMI-osztály
Illesztőprogram támogatott platformjának megadása