วิธีการเอาข้อมูลรีจิสทรีสำหรับอุปกรณ์ที่จะไม่ต้องใช้อีกครั้งบนคอมพิวเตอร์ที่กำลังเรียกใช้ Windows Server 2003 หรือรุ่นที่ใหม่กว่า

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 934234 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

คำแนะนำ

บนคอมพิวเตอร์ที่กำลังเรียกใช้ Windows Server 2003 หรือรุ่นที่ใหม่กว่าของ Windows อาจต้องการเชื่อมต่ออุปกรณ์เก็บข้อมูลที่มีการเชื่อมต่อ ผ่านช่องสัญญาณ fiber หรือโพรโทคอล iSCSI สำหรับรอบระยะเวลาสั้น ๆ เท่านั้น เมื่อเชื่อมต่ออุปกรณ์เก็บข้อมูล Windows สร้างข้อมูลรีจิสทรีสำหรับอุปกรณ์ ช่วงเวลา รีจิสทรีอาจประกอบด้วยหลายรายการสำหรับอุปกรณ์ที่จะไม่ใช้อีกต่อไป บทความนี้อธิบายวิธีการที่เอาข้อมูลนี้ออกจากรีจิสทรีของระบบ

ข้อมูลเพิ่มเติม

เมื่ออุปกรณ์ใหม่ถูกเชื่อมต่อกับคอมพิวเตอร์ Windows จะบันทึกข้อมูลที่เกี่ยวกับอุปกรณ์ในรีจิสทรีของระบบ สำหรับอุปกรณ์ส่วนใหญ่ กระบวนการนี้ไม่ก่อให้เกิดปัญหา อย่างไรก็ตาม หลังจากอุปกรณ์เก็บข้อมูลจะแสดงเป็นหน่วยทางลอจิคัลเลข (พร้อม) ผ่านช่องสัญญาณ fiber หรือ iSCSI อุปกรณ์อาจไม่สามารถพบอีกครั้งจากคอมพิวเตอร์ ตัวอย่างเช่น คุณอาจสามารถระบุอุปกรณ์ที่ ตามหมายเลขลำดับประจำสินค้า หรือ ตามหน้า SCSI 0x80 และ 0x83

ในสถานการณ์นี้ รีจิสทรีอาจประกอบด้วยรายการสำหรับอุปกรณ์ที่อาจไม่ปรากฏอีกต่อไป ไม่เพียงทำรายการเหล่านี้ใช้พื้นที่ว่างในรีจิสทรี รายการเหล่านี้อาจทำให้ปัญหาในการดำเนินงานในที่สุด ตัวอย่างเช่น เนื่องจากดัชนีสำหรับฟังก์ชันการทำงานแบบพลักแอนด์เพลย์ใช้ค่าทศนิยมสี่ตำแหน่ง ปัญหาอาจเกิดขึ้นเมื่อเชื่อมต่ออุปกรณ์ 10,001

เมื่อต้องการแก้ไขข้อจำกัดนี้ในฟังก์ชันการทำงานแบบพลักแอนด์เพลย์ คุณอาจต้องการเอาข้อมูลเกี่ยวกับอุปกรณ์จากรีจิสทรีเมื่ออุปกรณ์อยู่ในฮาร์ดดิสก์ที่ไม่มีอยู่ คุณสามารถทำเช่นนี้โดยการ Microsoft DevNodeClean โปรแกรมอรรถประโยชน์

วิธีการสร้างสำหรับ 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เพื่อขอรับ 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ชนิด การล้างข้อมูล ในข้อความชื่อในกล่อง และจากนั้น คลิกตกลง
  4. คลิกเสร็จสิ้นในกล่องโต้ตอบตัวช่วยสร้างโปรแกรมประยุกต์ Win32
  5. ในโซลูชัน Explorer ขยายแฟ้มแหล่งที่มา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
    __cdecl
    main(
         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

เมื่อต้องสร้างสำหรับ Windows Server 2012 และ Microsoft Visual Studio 2012 ให้ทำตามขั้นตอนเหล่านี้

หมายเหตุเราขอแนะนำว่า คุณควรใช้การDevNodeCleanโปรแกรมอรรถประโยชน์สำหรับงานนี้ ขั้นตอนต่อไปนี้และตัวอย่างรหัสในขั้นตอนที่ 7 ให้มาสำหรับวัตถุประสงค์ในการให้ข้อมูลเท่านั้น
  1. ใน Microsoft Visual Studio 2012 คลิกสร้างบนเมนูแฟ้มแล้ว คลิ กโครงการ
  2. ในกล่องโต้ตอบโครงการใหม่พิมพ์ การล้างข้อมูล ในชื่อฟิลด์ และจากนั้น คลิกสองครั้งที่โครงการ Win32
  3. ในวิซาร์โปรแกรมประยุกต์ Win32 คลิกถัดไป
  4. ภายใต้ชนิดของแอพลิเคชันคลิกเลือก แอพลิเคชันคอนโซลแล้ว คลิกเสร็จสิ้น
  5. ในโซลูชัน Explorer ขยายแฟ้มแหล่งที่มา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
    __cdecl
    main(
         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. ในโซลูชัน Explorerล้างข้อมูลบนคลิกขวา แล้ว คลิ กคุณสมบัติ
  9. ขยายคุณสมบัติการตั้งค่าคอนฟิกขยายตัวเชื่อมโยงข้อมูลและจากนั้น คลิกป้อนเข้า
  10. เลือกการอ้างอิงเพิ่มเติมคลิกลูกศร จากนั้นแก้ไข
  11. ในกล่องโต้ตอบการอ้างอิงเพิ่มเติมชนิดsetupapi.libและcfgmgr32.lib
  12. คลิก ตกลง สองครั้ง
  13. สร้างโครงการ

คุณสมบัติ

หมายเลขบทความ (Article ID): 934234 - รีวิวครั้งสุดท้าย: 13 กรกฎาคม 2557 - Revision: 4.0
ใช้กับ
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • 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 Edition (64-Bit x86)
  • Microsoft Windows Server 2003 R2 Enterprise Edition (64-Bit x86)
  • Microsoft Windows Server 2003 R2 Standard Edition (64-Bit x86)
  • 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
Keywords: 
kboem kbcode kbinfo kbhowto kbmt KB934234 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:934234

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com