Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der IADsPathname Schnittstellenparses und ändert verschiedene Elemente eines ADsPath. Außerdem werden ADsPaths zwischen verschiedenen Anzeigeformaten konvertiert.
Im folgenden Codebeispiel wird der Servername aus einem gültigen ADsPath für die Anzeige an den Benutzer in einem Wartungsprogramm extrahiert und zurückgegeben.
HRESULT GetServerName(BSTR adsPath, BSTR *adsServer)
{
HRESULT hr = S_OK;
IADsPathname *pIADsPathname = NULL;
// Create the IADsPathname object.
hr = CoCreateInstance(CLSID_Pathname,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsPathname,
(void**) &pIADsPathname);
if (FAILED(hr))
{
if (pIADsPathname)
pIADsPathname->Release();
return (hr);
}
// Set the path.
hr = pIADsPathname->Set(adsPath, ADS_SETTYPE_FULL);
if (SUCCEEDED(hr))
// Extract and return the server name.
hr = pIADsPathname->Retrieve(ADS_FORMAT_SERVER, adsServer);
// Cleanup.
pIADsPathname->Release();
return (hr);
}
Das folgende Codebeispiel hilft beim Initialisieren eines neu erstellten ADSI-Objekts, indem die Distinguished Name-Eigenschaft des Objekts aus seinem eigenen ADsPath festgelegt wird. Beachten Sie, dass die aufrufende Routine alle Änderungen am zugrunde liegenden Verzeichnisspeicher übernehmen muss, indem Sie die SetInfo--Methode aufrufen.
HRESULT SetDistinguishedName(IADs *pIADs)
{
HRESULT hr = S_OK;
CComBSTR sbstrADsPath;
IADsPathname *pIADsPathname = NULL;
// Get the ADsPath for this object.
hr = pIADs->get_ADsPath(&sbstrADsPath);
if (FAILED(hr))
return (hr);
// Create the IADsPathname object.
hr = CoCreateInstance(CLSID_Pathname,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsPathname,
(void**) &pIADsPathname);
if (FAILED(hr))
{
if (pIADsPathname)
pIADsPathname->Release();
return (hr);
}
// Set the path.
hr = pIADsPathname->Set(sbstrADsPath, ADS_SETTYPE_FULL);
if (SUCCEEDED(hr))
{
CComBSTR sbstrDNPath;
// Convert the path to Distinguished Name format.
hr = pIADsPathname->Retrieve(ADS_FORMAT_WINDOWS_DN,
&sbstrDNPath);
if (SUCCEEDED(hr))
{
// Set the distinguished name property.
VARIANT var;
VariantInit(&var);
V_BSTR(&var) = sbstrDNPath;
V_VT(&var) = VT_BSTR;
hr = pIADs->Put(CComBSTR("distinguishedName"), var);
VariantClear(&var);
}
}
// Cleanup.
pIADsPathname->Release();
return (hr);
}