Τρόπος κατάργησης πληροφοριών μητρώου για συσκευές που θα ποτέ να χρησιμοποιηθεί ξανά σε έναν υπολογιστή που εκτελεί Windows Server 2003 ή νεότερη έκδοση

Η υποστήριξη για τα Windows Server 2003 έληξε στις 14 Ιουλίου 2015

Η υποστήριξη της Microsoft για τα Windows Server 2003 έληξε στις 14 Ιουλίου 2015. Αυτή η αλλαγή επηρέασε τις ενημερώσεις λογισμικού και τις επιλογές ασφαλείας σας. Μάθετε τι σημαίνει αυτό για εσάς και το πώς θα προστατευτείτε.

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο έχει μεταφραστεί χρησιμοποιώντας λογισμικό μηχανικής μετάφρασης της Microsoft και μπορείτε να το διορθώσετε χρησιμοποιώντας την τεχνολογία Community Translation Framework (CTF) (Πλαίσιο μετάφρασης κοινότητας). Η Microsoft παρέχει μηχανική μετάφραση, επεξεργασία μετά τη μηχανική μετάφραση από την κοινότητα και άρθρα μεταφρασμένα από επαγγελματίες προκειμένου να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής βάσης σε πολλές γλώσσες. Τα άρθρα μηχανικής μετάφρασης και αυτά που επεξεργάζονται ύστερα από μηχανική μετάφραση ενδέχεται να περιέχουν σφάλματα στο λεξιλόγιο, στη σύνταξη ή/και στη γραμματική. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες μας. Για περισσότερες πληροφορίες σχετικά με το CTF, μεταβείτε στην τοποθεσία http://support.microsoft.com/gp/machine-translation-corrections/el.

Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη: 934234
ΕΙΣΑΓΩΓΗ
Σε έναν υπολογιστή που εκτελεί Windows Server 2003 ή νεότερη έκδοση των Windows, μια συσκευή αποθήκευσης που είναι συνδεδεμένοι μέσω ενός καναλιού οπτικών ινών ή το πρωτόκολλο iSCSI μπορεί να συνδέεται για μόνο ένα μικρό χρονικό διάστημα. Όταν μια συσκευή αποθήκευσης που είναι συνδεδεμένη, τα Windows δημιουργούν πληροφορίες μητρώου για τη συσκευή. Με τον καιρό, το μητρώο μπορεί να περιέχει πολλές εγγραφές για συσκευές που πρόκειται να χρησιμοποιηθεί ποτέ ξανά. Αυτό το άρθρο περιγράφει τον τρόπο κατάργησης αυτών των πληροφοριών από το μητρώο του συστήματος.
Περισσότερες πληροφορίες
Όταν μια νέα συσκευή είναι συνδεδεμένη σε έναν υπολογιστή, τα Windows εγγραφές πληροφορίες σχετικά με τη συσκευή στο μητρώο του συστήματος. Για τις περισσότερες συσκευές, η διαδικασία αυτή δεν προκαλεί πρόβλημα. Ωστόσο, όταν μια συσκευή αποθήκευσης που παρουσιάζεται από έναν αριθμό λογικής μονάδας (LUN) μέσω καναλιού οπτικών ινών ή iSCSI, η συσκευή μπορεί ποτέ να παρουσιαστούν ξανά από τον υπολογιστή. Για παράδειγμα, μια συσκευή μπορεί να έχουν προσδιοριστεί από έναν σειριακό αριθμό ή σελίδες SCSI 0x80 και 0x83.

Σε αυτήν την περίπτωση, το μητρώο μπορεί να περιέχει εγγραφές για τις συσκευές που μπορεί να εμφανιστεί ποτέ ξανά. Όχι μόνο κάνετε αυτές τις καταχωρήσεις, καταλαμβάνουν χώρο στο μητρώο, αλλά αυτές οι καταχωρήσεις μπορεί τελικά να προκαλέσει λειτουργικά προβλήματα. Για παράδειγμα, επειδή ευρετήρια για τοποθέτηση και Άμεση λειτουργία χρησιμοποιήσετε δεκαδικές τιμές τεσσάρων ψηφίων, ένα πρόβλημα ενδέχεται να παρουσιαστεί όταν είναι συνδεδεμένη η συσκευή 10,001.

Για να επιλύσετε αυτόν τον περιορισμό στη λειτουργία Τοποθέτησης και Άμεσης λειτουργίας, μπορεί να θέλετε να καταργήσετε πληροφορίες συσκευής από το μητρώο, όταν η συσκευή είναι μια μονάδα σκληρού δίσκου που δεν υπάρχει πλέον. Μπορείτε να το κάνετε χρησιμοποιώντας το DevNodeClean της Microsoft βοηθητικό πρόγραμμα.

Πώς να δημιουργείτε για Windows Server 2003, Windows Server 2008, Windows Server 2008 R2 και Visual Studio 2005

Για την εκκαθάριση του μητρώου για την κλάση δίσκου GUID_DEVCLASS_DISKDRIVE GUID και για την GUID_DEVCLASS_VOLUME δίσκων GUID κλάσης, ακολουθήστε τα εξής βήματα.

ΣημείωσηΣας συνιστούμε να χρησιμοποιείτε το DevNodeCleanβοηθητικό πρόγραμμα για αυτήν την εργασία. Τα ακόλουθα βήματα και παράδειγμα κώδικα στο βήμα 7 παρέχονται μόνο για ενημερωτικούς σκοπούς.
  1. Για να καλέσετε τη συνάρτηση SetupDiGetClassDevs για να λάβετε πληροφορίες για την κλάση που σχετίζεται με το GUID.
  2. Για να καλέσετε τη συνάρτηση SetupDiEnumDeviceInfo για να λάβετε πληροφορίες παρουσίας για κάθε συσκευή της τρέχουσας κλάσης.
  3. Για να καλέσετε τη συνάρτηση CM_Get_DevNode_Status για να δείτε εάν τις τρέχουσες πληροφορίες συσκευής αντιπροσωπεύει μια συσκευή που δεν υπάρχει. Καθορίστε αν η κατάσταση λειτουργίας είναι ίσο με CR_NO_SUCH_DEVINST ή να CR_NO_SUCH_VALUE.
  4. Προαιρετικά, για μια συσκευή, η απουσία καλέσετε τη συνάρτηση CM_Get_Device_ID για να αποκτήσετε το Αναγνωριστικό εμφάνισης συσκευής και για να εμφανίσετε το Αναγνωριστικό, πριν να καταργήσετε τις πληροφορίες.
  5. Για τη συσκευή που λείπει, χρησιμοποιήστε τις πληροφορίες κλάσης που αποκτήσατε στο βήμα 1 και τις πληροφορίες εμφάνισης που αποκτήσατε στο βήμα 2. Κλήση της συνάρτησης SetupDiCallClassInstaller (DIF_REMOVE...) για να καταργήσετε τις πληροφορίες από το μητρώο.
  6. Όταν έχουν υποστεί χειρισμούς όλες τις συσκευές στην τρέχουσα κλάση, να καλέσετε τη συνάρτηση SetupDiDestroyDeviceInfoList για την εκκαθάριση.
Σημείωση Σε ορισμένα σενάρια, ενδέχεται να πρέπει να καθαρίσετε το μητρώο, όχι μόνο για τις GUID_DEVCLASS_DISKDRIVE και GUID_DEVCLASS_VOLUME δίσκων GUID κλάσης αλλά και για την GUID_DEVCLASS_SCSIADAPTER και την GUID_DEVCLASS_VOLUMESNAPSHOT δίσκων GUID κλάσης. Για να γίνει αυτό, πρέπει να αλλάξετε τον ορισμό του DiskClassesToClean στο ακόλουθο δείγμα κώδικα.

Η παρακάτω εφαρμογή κονσόλας Win32 είναι ένα παράδειγμα μιας εφαρμογής που καθαρίζει το μητρώο. Για να χρησιμοποιήσετε αυτήν την εφαρμογή, ακολουθήστε τα εξής βήματα.

Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για επεξήγηση, χωρίς καμία εγγύηση, είτε σιωπηρή είτε ρητή. Αυτό περιλαμβάνει, αλλά δεν είναι ενδεικτικά, των σιωπηρών εγγυήσεων εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία και τον εντοπισμό σφαλμάτων διαδικασιών. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας. Ωστόσο, δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες για να καλύψουν τις συγκεκριμένες απαιτήσεις σας.
  1. Στο Microsoft Visual Studio 2005, κάντε κλικ στο κουμπί " Δημιουργία " από το μενού αρχείο και, στη συνέχεια, κάντε κλικ στο έργο.
  2. Αναπτύξτε το στοιχείο Visual C++και, στη συνέχεια, κάντε κλικ στο κουμπί Win32.
  3. Κάντε κλικ στο κουμπί Εφαρμογή κονσόλας Win32, τύπος Εκκαθάριση στο κείμενο όνομα πλαίσιο και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
  4. Κάντε κλικ στο κουμπί Τέλος στο παράθυρο διαλόγου "Οδηγός" εφαρμογή Win32 .
  5. Στην Εξερεύνηση λύση, αναπτύξτε Τα αρχεία προέλευσης, κάντε δεξιό κλικ στο Cleanup.cppκαι, στη συνέχεια, κάντε κλικ στο κουμπί Προβολή κώδικα.
  6. Εντοπίστε τον ακόλουθο κώδικα:
    int _tmain(int argc, _TCHAR* argv[]){	return 0;}
  7. Αντικαταστήστε τον κωδικό που εντοπίσατε στο βήμα 6, με τον ακόλουθο κώδικα.
    /**************************************************************************************************/     /*                                                                                                */     /* Copyright (c) 2007 Microsoft Corporation.  All Rights Reserved                                 */     /*                                                                                                */     /**************************************************************************************************/     #pragma warning( disable : 4201 ) // nonstandard extension used : nameless strut/union#include <windows.h>#include <stdlib.h>#include <stdio.h>#include <stddef.h>#include <tchar.h>#include <setupapi.h>#include <cfgmgr32.h>#include <initguid.h>#include <devguid.h>#define SIZECHARS(x) (sizeof((x))/sizeof(TCHAR))#define arraysize(p) (sizeof(p)/sizeof((p)[0]))CONST GUID *DiskClassesToClean[2] = {    &GUID_DEVCLASS_DISKDRIVE,    &GUID_DEVCLASS_VOLUME};/**************************************************************************************************//*                                                                                                *//* The user must be member of Administrator group and must have backup and restore permissions         *//* (SE_BACKUP_NAME and SE_RESTORE_NAME). No check for these is performed in this example.              *//*                                                                                                *//**************************************************************************************************/int__cdeclmain(     IN int    ArgC,     IN char * pArgV[]    ){    HDEVINFO DeviceInfoSet;    SP_DEVINFO_DATA DeviceInfoData;    ULONG DevicesRemoved = 0,          i,          MemberIndex,          Status,           Problem,          ulClassesToCleanIdx;    BOOL bDoRemove = TRUE;    CONFIGRET cr;    TCHAR DeviceInstanceId[MAX_DEVICE_ID_LEN];    OSVERSIONINFO osvi;    const GUID ** ClassesToClean;    //    // Parse parameters.    //    for (i = 1; i < (ULONG)ArgC; i++) {        //        // Check for help.        //        if ( (lstrcmpi(pArgV[i], TEXT("-?")) == 0) ||                (lstrcmpi(pArgV[i], TEXT("/?")) == 0) ){            printf("\nCleanUp will remove phantom storage device nodes from this machine.\n\n");            printf("Usage:  CleanUp \n");            printf("\twhere /n displays but does not remove the phantom devnodes.\n");            printf("\nBackup and Restore privileges are required to run this utility.\n");            return 0;        }        //        // Check for -n, which means just list the devices that we would remove.        //        if ( (lstrcmpi(pArgV[i], TEXT("-n")) == 0) ||             (lstrcmpi(pArgV[i], TEXT("/n")) == 0) ) {            bDoRemove = FALSE;        }    }    //    // Run only on Windows XP/2003 (version 5.1) or later.    //    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);    if (!GetVersionEx(&osvi)) {        printf("CleanUp:  Unable to verify Windows version, exiting...\n");        return -1;    }    if ((osvi.dwMajorVersion == 5) &&        ((osvi.dwMinorVersion == 1) || (osvi.dwMinorVersion == 2))) {    }    else if (osvi.dwMajorVersion>=6) {    }    else    {        printf("CleanUp:  This utility is  designed to run on Windows XP/2003 and later\n");        return -1;    }    ClassesToClean = DiskClassesToClean;    ulClassesToCleanIdx = arraysize(DiskClassesToClean);    for (i=0; (i<ulClassesToCleanIdx) && (bDoRemove); i++) {        DeviceInfoSet = SetupDiGetClassDevs(ClassesToClean[i],                                            NULL,                                            NULL,                                            0                                            );        if (INVALID_HANDLE_VALUE!=DeviceInfoSet) {            DeviceInfoData.cbSize = sizeof(DeviceInfoData);            MemberIndex = 0;            while (SetupDiEnumDeviceInfo(DeviceInfoSet,                                         MemberIndex++,                                         &DeviceInfoData                                         )) {                //                // Determine whether this device is a phantom.                //                cr = CM_Get_DevNode_Status(&Status,                                           &Problem,                                           DeviceInfoData.DevInst,                                           0                                           );                if ((cr == CR_NO_SUCH_DEVINST) ||                    (cr == CR_NO_SUCH_VALUE)) {                    //                    // This is a phantom. Now get the DeviceInstanceId so we                    // can display this as output, then delete the phantom if requested.                    //                    if (CM_Get_Device_ID(DeviceInfoData.DevInst,                                         DeviceInstanceId,                                         SIZECHARS(DeviceInstanceId),                                         0) == CR_SUCCESS) {                        if (bDoRemove) {                            printf("DevNodePhantomCleaner:  %s will be removed.\n",                                   DeviceInstanceId);                            //                            // Call DIF_REMOVE to remove the device's hardware                            // and software registry keys.                            //                            if (SetupDiCallClassInstaller(DIF_REMOVE,                                                          DeviceInfoSet,                                                          &DeviceInfoData                                                          )) {                                DevicesRemoved++;                            } else {                                printf("CleanUp:  Error 0x%X removing phantom\n",                                       GetLastError);                            }                        } else {                            printf("CleanUp:  %s would have been removed.\n",                                   DeviceInstanceId);                        }                    }                }            }            SetupDiDestroyDeviceInfoList(DeviceInfoSet);        }    }    return DevicesRemoved;}
  8. Κάντε κλικ στο κουμπί μενού Εντοπισμός σφαλμάτων και, στη συνέχεια, κάντε κλικ στο κουμπί Εκκίνηση εντοπισμού σφαλμάτων.

Πώς να δημιουργείτε για Windows Server 2012 και Visual Studio 2012

Για να δημιουργήσετε 2012 διακομιστή των Windows και το Microsoft Visual Studio 2012, ακολουθήστε τα εξής βήματα.

ΣημείωσηΣας συνιστούμε να χρησιμοποιείτε τοDevNodeCleanβοηθητικό πρόγραμμα για αυτήν την εργασία. Τα ακόλουθα βήματα και παράδειγμα κώδικα στο βήμα 7 παρέχονται μόνο για ενημερωτικούς σκοπούς.
  1. Στο Microsoft Visual Studio 2012, κάντε κλικ στο κουμπί " Δημιουργία " από το μενού αρχείο και, στη συνέχεια, κάντε κλικ στο έργο.
  2. Στο πλαίσιο διαλόγου " Νέο έργο ", πληκτρολογήστε Εκκαθάριση στο όνομα πεδίου και, στη συνέχεια, κάντε διπλό κλικ στο Έργο του Win32.
  3. Στον Οδηγό εφαρμογή Win32, κάντε κλικ στο κουμπί Επόμενο.
  4. Στην περιοχή τύπος εφαρμογής, κάντε κλικ στην επιλογή <b00> </b00>εφαρμογής κονσόλας, και στη συνέχεια κάντε κλικ στο κουμπί Τέλος.
  5. Στην Εξερεύνηση λύση, αναπτύξτε Τα αρχεία προέλευσης, κάντε δεξιό κλικ στο Cleanup.cppκαι, στη συνέχεια, κάντε κλικ στο κουμπί Προβολή κώδικα.
  6. Εντοπίστε τον ακόλουθο κώδικα:
    int _tmain(int argc, _TCHAR* argv[]){	return 0;}
  7. Αντικαταστήστε τον κωδικό που εντοπίσατε στο βήμα 6, με τον ακόλουθο κώδικα.
    //DevPhantomClnr.cpp : Defines the entry point for the console application.//  #include "stdafx.h"/**************************************************************************************************/     /*                                                                                                */     /* Copyright (c) 2007 Microsoft Corporation.  All Rights Reserved                                 */     /*                                                                                                */     /**************************************************************************************************/     #pragma warning( disable : 4201 ) // nonstandard extension used : nameless strut/union#include <windows.h>#include <stdlib.h>#include <stdio.h>#include <stddef.h>#include <tchar.h>#include <setupapi.h>#include <cfgmgr32.h>#include <initguid.h>#include <devguid.h>#define SIZECHARS(x) (sizeof((x))/sizeof(TCHAR))#define arraysize(p) (sizeof(p)/sizeof((p)[0]))CONST GUID *DiskClassesToClean[2] = {    &GUID_DEVCLASS_DISKDRIVE,    &GUID_DEVCLASS_VOLUME};/**************************************************************************************************//*                                                                                                *//* The user must be member of Administrator group and must have backup and restore permissions         *//* (SE_BACKUP_NAME and SE_RESTORE_NAME). No check for these is performed in this example.              *//*                                                                                                *//**************************************************************************************************/int__cdeclmain(     IN int    ArgC,     IN LPCWSTR pArgV[]    ){    HDEVINFO DeviceInfoSet;    SP_DEVINFO_DATA DeviceInfoData;    ULONG DevicesRemoved = 0,          i,          MemberIndex,          Status,           Problem,          ulClassesToCleanIdx;    BOOL bDoRemove = TRUE;    CONFIGRET cr;    TCHAR DeviceInstanceId[MAX_DEVICE_ID_LEN];    OSVERSIONINFO osvi;    const GUID ** ClassesToClean;    //    // Parse parameters.    //    for (i = 1; i < (ULONG)ArgC; i++) {        //        // Check for help.        //        if ( (lstrcmpi(pArgV[i], L"-?") == 0) ||                (lstrcmpi(pArgV[i], L"/?") == 0) ){            printf("\nDevNodePhantomCleaner will remove phantom storage device nodes from this machine.\n\n");            printf("Usage:  nDevNodePhantomCleaner \n");            printf("\tWhere /n displays but does not remove the phantom devnodes.\n");            printf("\nBackup and Restore privileges are required to run this utility.\n");            return 0;        }        //        // Check for -n, which means just list the devices that we would remove.        //        if ( (lstrcmpi(pArgV[i], L"-n") == 0) ||             (lstrcmpi(pArgV[i], L"/n") == 0) ) {            bDoRemove = FALSE;        }    }    //    // Run only on Windows XP/2003 (version 5.1) or later.    //    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);    if (!GetVersionEx(&osvi)) {        printf("DevNodePhantomCleaner:  Unable to verify Windows version, exiting...\n");        return -1;    }    if ((osvi.dwMajorVersion == 5) &&        ((osvi.dwMinorVersion == 1) || (osvi.dwMinorVersion == 2))) {        // 5.1 || 5.2    }    else if (osvi.dwMajorVersion>=6) {        //Nothing special on 6.x    }    else    {        printf("DevNodePhantomCleaner:  This utility is  designed to run on Windows XP/2003 and later\n");        return -1;    }    ClassesToClean = DiskClassesToClean;    ulClassesToCleanIdx = arraysize(DiskClassesToClean);    for (i=0; (i<ulClassesToCleanIdx) && (bDoRemove); i++) {        DeviceInfoSet = SetupDiGetClassDevs(ClassesToClean[i],                                            NULL,                                            NULL,                                            0                                            );        if (INVALID_HANDLE_VALUE!=DeviceInfoSet) {            DeviceInfoData.cbSize = sizeof(DeviceInfoData);            MemberIndex = 0;            while (SetupDiEnumDeviceInfo(DeviceInfoSet,                                         MemberIndex++,                                         &DeviceInfoData                                         )) {                //                // Determine whether this device is a phantom.                //                cr = CM_Get_DevNode_Status(&Status,                                           &Problem,                                           DeviceInfoData.DevInst,                                           0                                           );                if ((cr == CR_NO_SUCH_DEVINST) ||                    (cr == CR_NO_SUCH_VALUE)) {                    //                    // This is a phantom. Now get the DeviceInstanceId so we                    // can display this as output, then delete the phantom if requested.                    //                    if (CM_Get_Device_ID(DeviceInfoData.DevInst,                                         DeviceInstanceId,                                         SIZECHARS(DeviceInstanceId),                                         0) == CR_SUCCESS) {                        if (bDoRemove) {                            printf("DevNodePhantomCleaner:  %ws will be removed.\n",                                   DeviceInstanceId);                            //                            // Call DIF_REMOVE to remove the device's hardware                            // and software registry keys.                            //                            if (SetupDiCallClassInstaller(DIF_REMOVE,                                                          DeviceInfoSet,                                                          &DeviceInfoData                                                          )) {                                DevicesRemoved++;                            } else {                                printf("DevNodePhantomCleaner:  Error 0x%x removing phantom\n",                                       GetLastError());                            }                        } else {                            printf("DevNodePhantomCleaner:  %ws would have been removed.\n",                                   DeviceInstanceId);                        }                    }                }            }            SetupDiDestroyDeviceInfoList(DeviceInfoSet);        }    }    return DevicesRemoved;}
  8. Στην Εξερεύνηση των λύσεων, κάντε δεξιό κλικ Εκκαθάρισηκαι, στη συνέχεια, κάντε κλικ στο κουμπί Ιδιότητες.
  9. Αναπτύξτε το στοιχείο Ιδιότητες παραμέτρων, αναπτύξτε το πρόγραμμα σύνδεσηςκαι, στη συνέχεια, κάντε κλικ στο κουμπί εισόδου.
  10. Επιλέξτε Επιπλέον εξαρτήσεις, κάντε κλικ στο κάτω βέλος και στη συνέχεια επιλέξτε Επεξεργασία.
  11. Στο παράθυρο διαλόγου Επιπλέον εξαρτήσεις , τύπου setupapi.lib και cfgmgr32.lib.
  12. Κάντε κλικ στο κουμπί OK δύο φορές.
  13. Δημιουργήστε το έργο.

iSCSI LUN win2003

Προειδοποίηση: Αυτό το άρθρο έχει μεταφραστεί αυτόματα

Vlastnosti

ID článku: 934234 - Poslední kontrola: 07/10/2014 16:20:00 - Revize: 4.0

Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003, Datacenter Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, Datacenter x64 Edition, Microsoft Windows Server 2003, Standard x64 Edition, Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems, Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems, Microsoft Windows Server 2003 R2 Standard Edition (32-bit x86), Microsoft Windows Server 2003 R2 Enterprise Edition (32-Bit x86), Microsoft Windows Server 2003 R2 Datacenter Edition (32-Bit x86), Microsoft Windows Server 2003 R2 Datacenter x64 Edition, Microsoft Windows Server 2003 R2 Enterprise x64 Edition, Microsoft Windows Server 2003 R2 Standard x64 Edition, Microsoft Windows Storage Server 2003 R2 x64 Enterprise, Microsoft Windows Storage Server 2003 R2 x64 Standard, Windows Server 2008 Datacenter, Windows Server 2008 Datacenter without Hyper-V, Windows Server 2008 Enterprise, Windows Server 2008 Enterprise without Hyper-V, Windows Server 2008 for Itanium-Based Systems, Windows Server 2008 Standard, Windows Server 2008 Standard without Hyper-V, Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Standard, Windows Server 2012 Standard, Windows Server 2012 Datacenter

  • kboem kbcode kbinfo kbhowto kbmt KB934234 KbMtel
Váš názor