SetupDiSetDeviceProperty เป็นฟังก์ชันที่กำหนดคุณสมบัติของอินสแตนซ์อุปกรณ์ อินสแตนซ์อุปกรณ์คือสตริงระบุตัวตนอุปกรณ์ที่ไม่ซ้ำกันและช่วยระบุอุปกรณ์ในระบบ ฟังก์ชัน SetupDiSetDeviceProperty สำคัญเพราะมันตั้งค่าชื่อที่แสดงและพารามิเตอร์อื่นๆ ของอุปกรณ์คอมพิวเตอร์ของคุณ
SetupDiSetDeviceProperty เป็นส่วนหนึ่งของแบบจำลองคุณสมบัติอุปกรณ์ที่รวมเป็นหนึ่งเดียวซึ่งได้รับการสนับสนุนโดยระบบปฏิบัติการ Windows แบบจำลองคุณสมบัติอุปกรณ์นี้กำหนดว่าอุปกรณ์ของคุณถูกแทนอย่างไร อธิบายฟังก์ชันของพวกมัน และตั้งค่าคอนฟิกูเรชันของพวกมันในระบบปฏิบัติการ Windows กระบวนการนี้ใช้ได้กับฮาร์ดแวร์ทั้งหมดที่ต่อกับคอมพิวเตอร์ของคุณ รวมถึงเสียง จอภาพ เครือข่าย และอุปกรณ์อื่นๆ
นี่คือไวยากรณ์ที่ใช้สำหรับกระบวนการ SetupDiSetDeviceProperty:
WINSETUPAPI BOOL SetupDiSetDeviceInterfacePropertyW(
HDEVINFO DeviceInfoSet,
PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
const DEVPROPKEY *PropertyKey,
DEVPROPTYPE PropertyType,
const PBYTE PropertyBuffer,
DWORD PropertyBufferSize,
DWORD Flags
SetupDiSetDeviceProperty จะสำเร็จหากคืนค่า TRUE เมื่อเกิดข้อผิดพลาดที่ใดที่หนึ่งในกระบวนการ มันจะคืนค่า FALSE พร้อมรหัสคืนที่เฉพาะเจาะจง
รหัสคืนหนึ่งที่ผู้ใช้ Windows พบคือข้อผิดพลาด ERROR_ACCESS_DENIED บน Windows 10/11 เมื่อข้อผิดพลาดนี้เกิดขึ้น กระบวนการ SetupDiSetDeviceProperty จะล้มเหลวและไม่สามารถดำเนินต่อได้ สาเหตุหลักของข้อผิดพลาดต้องได้รับการแก้ไขก่อนลองใหม่
สาเหตุของข้อผิดพลาด ERROR_ACCESS_DENIED
รหัสคืน ERROR_ACCESS_DENIED เกิดขึ้นเพราะ "ผู้เรียกไม่มีสิทธิ์ Administrator" หากคุณสงสัยว่า SetupDiSetDeviceProperty คืนค่า ERROR_ACCESS_DENIED ทำไม แค่หมายความว่าคุณไม่มีสิทธิ์เขียนเต็มรูปแบบไปยังอุปกรณ์ที่คุณพยายามแก้ไข มันอาจเป็นว่าคุณใช้บัญชีที่ไม่ใช่แอดมิน หรือใช้บัญชีแอดมินแต่มีสิทธิ์จำกัด
เพื่อแก้ไขข้อผิดพลาดนี้ คุณต้องตรวจสอบสิทธิ์ของบัญชีของคุณ และว่าอุปกรณ์ที่คุณพยายามแก้ไขต้องการสิทธิ์เฉพาะหรือไม่
สาเหตุอีกอย่างของ ERROR_ACCESS_DENIED คือปัญหาความเข้ากันได้ หากโปรแกรมที่คุณพยายามแก้ไขถูกออกแบบสำหรับ Windows เวอร์ชันก่อนหน้า มันอาจไม่เข้ากันได้กับ Windows 10/11 จึงเกิดข้อผิดพลาด ข้อผิดพลาดนี้อาจปรากฏได้หากโปรแกรมที่ได้รับผลกระทบล้าสมัยหรือเสียหาย
วิธีแก้ไข ERROR_ACCESS_DENIED
ข้อผิดพลาด ERROR_ACCESS_DENIED บน Windows 10/11 อาจดูซับซ้อน แต่วิธีแก้ไขจริงๆ แล้วง่าย แต่ก่อนที่คุณจะลองวิธีใดวิธีหนึ่งด้านล่าง ให้กำจัดไฟล์ขยะก่อนด้วย Outbyte PC Repair และสแกนคอมพิวเตอร์หาไวรัสและมัลแวร์
ขั้นตอนเหล่านี้จะช่วยทำความสะอาดคอมพิวเตอร์และเพิ่มประสิทธิภาพระบบสำหรับกระบวนการแก้ไขปัญหา หากเสร็จแล้ว ให้รีสตาร์ทคอมพิวเตอร์และทำตามรายการด้านล่างทีละขั้นตอน
วิธีแก้ไข #1: ซ่อมแซมไฟล์ระบบที่เสียหาย
หนึ่งในเหตุผลที่เป็นไปได้ที่ SetupDiSetDeviceProperty คืนค่า ERROR_ACCESS_DENIED คือ บางไฟล์ระบบที่เกี่ยวข้องกับโปรแกรมที่คุณต้องการแก้ไขได้รับความเสียหายหรือบิดเบือน เพื่อตรวจสอบความสมบูรณ์ของไฟล์ระบบของคุณ คุณสามารถใช้เครื่องมือ System File Checker หรือ SFC ซึ่งมีอยู่ในตัว Windows
เพื่อรันการสแกนด้วย SFC ให้ทำตามขั้นตอนด้านล่าง:
- คลิก Command + X เพื่อเปิด Power Menu แล้วเลือก Command Prompt (Admin) จากตัวเลือก
- ใส่ sfc /scannow ในหน้าต่าง Command Prompt แล้วกด Enter
- รอจนการสแกนเสร็จสิ้น SFC จะพยายามแทนที่ไฟล์ระบบที่เสียหายด้วยสำเนาที่ดีจากไฟล์ Windows Recovery Image
รีสตาร์ทคอมพิวเตอร์เพื่อให้การเปลี่ยนแปลงใหม่มีผล และตรวจสอบว่าข้อผิดพลาด ERROR_ACCESS_DENIED ยังคงอยู่หรือไม่
วิธีแก้ไข #2: เรียกใช้ในโหมดความเข้ากันได้ (Compatibility Mode)
การเรียกใช้โปรแกรมที่ออกแบบสำหรับ Windows เวอร์ชันก่อนหน้า เช่น Windows 7, Windows 8 หรือ Windows 8.1 อาจนำไปสู่ปัญหาความเข้ากันได้ อย่างไรก็ตาม ไม่ได้หมายความว่าโปรแกรมเก่าเหล่านี้ล้าสมัย คุณสามารถเรียกใช้พวกมันในโหมดความเข้ากันได้เพื่อให้ทำงานได้อย่างถูกต้องและราบรื่น
เพื่อเรียกใช้โปรแกรมของคุณในโหมดความเข้ากันได้:
- คลิกขวาที่ทางลัดของโปรแกรมบน Desktop แล้วคลิก Properties จากเมนูคลิกขวา
- คลิกที่แท็บ Compatibility
- ภายใต้ Compatibility Mode เลือกเวอร์ชัน Windows ที่คุณต้องการใช้ แล้วคลิก OK
- ติ๊กถูก Run this program as an administrator (เรียกใช้โปรแกรมนี้ในฐานะผู้ดูแลระบบ) ด้วย
เมื่อคุณตั้งค่าโปรแกรมให้เรียกใช้ในโหมดความเข้ากันได้กับเวอร์ชัน Windows ที่คุณใช้แล้ว ลองฟังก์ชัน SetupDiSetDeviceProperty อีกครั้งและดูว่ามันยังคืนค่า ERROR_ACCESS_DENIED หรือไม่ หากยังคงอยู่ ให้ดำเนินต่อไปขั้นตอนถัดไป
วิธีแก้ไข #3: อัปเดตโปรแกรมของคุณ
บางครั้งข้อผิดพลาดเกิดขึ้นเพียงแค่เพราะคุณลืมอัปเดตโปรแกรม ตรวจสอบ Windows Update ภายใต้ Settings > System & Security และดูว่ามีซอฟต์แวร์หรืออัปเดตระบบที่ค้างอยู่หรือไม่ ติดตั้งอัปเดตที่มีอยู่ทั้งหมดภายใต้ Windows Update
หากคุณไม่เห็นอะไร ให้ตรวจสอบเว็บไซต์ของนักพัฒนาซอฟต์แวร์ - อาจมีแพตช์หรืออัปเดตใหม่ที่ต้องดาวน์โหลด ดาวน์โหลดด้วยตนเองและติดตั้งบนคอมพิวเตอร์ของคุณเพื่ออัปเดตโปรแกรม หลังจากอัปเดต รีบูทระบบของคุณและดูว่าข้อผิดพลาด ERROR_ACCESS_DENIED ได้รับการแก้ไขหรือยัง
วิธีแก้ไข #4: ยกเลิกการเปลี่ยนแปลงระบบล่าสุด
หากคุณติดตั้งหรือลบบางอย่างก่อนที่ข้อผิดพลาด ERROR_ACCESS_DENIED จะปรากฏ การกระทำนี้อาจส่งผลต่อระบบของคุณและทำให้เกิดข้อผิดพลาด ลองทบทวนสิ่งที่คุณทำและยกเลิกมันหากเป็นไปได้
หากคุณเพิ่งติดตั้งอัปเดต คุณสามารถย้อนระบบกลับไปเมื่อทุกอย่างทำงานได้ดีโดยทำตามขั้นตอนด้านล่าง:
- คลิก Start แล้วไปที่ Settings
- คลิกที่ Update & Security แล้วคลิกที่ Windows Update > Update History
- คลิกลิงก์ View installed update history
- คุณจะได้รับรายการอัปเดตที่ติดตั้งล่าสุดทั้งหมด คลิกที่อันล่าสุดและกดปุ่ม Uninstall Update
- คุณจะต้องรีสตาร์ทคอมพิวเตอร์เพื่อให้การเปลี่ยนแปลงมีผล แล้วตรวจสอบว่าข้อผิดพลาด ERROR_ACCESS_DENIED ยังปรากฏหรือไม่
วิธีแก้ไข #5: ถอนการติดตั้ง แล้วติดตั้งโปรแกรมที่ได้รับผลกระทบใหม่
หากคุณยังเจอข้อผิดพลาด ERROR_ACCESS_DENIED บน Windows 10/11 แม้หลังจากลองวิธีข้างต้น ตัวเลือกสุดท้ายของคุณจะเป็นการถอนการติดตั้งโปรแกรม
เพื่อถอนการติดตั้งโปรแกรมบน Windows 10/11:
- ไปที่ Start > Settings > System แล้วคลิกที่ Apps & features จากเมนูด้านซ้าย
- เลือกโปรแกรมที่คุณต้องการถอนการติดตั้ง
- คลิกที่ปุ่ม Uninstall
- รีสตาร์ทคอมพิวเตอร์
เพื่อติดตั้งโปรแกรมใหม่ ให้ดาวน์โหลดสำเนาตัวติดตั้งจากเว็บไซต์ของนักพัฒนาหรือผ่าน Microsoft Store คลิกที่ไฟล์ที่ดาวน์โหลดและติดตั้งโปรแกรมตามคำแนะนำ
สรุป
SetupDiSetDeviceProperty เป็นฟังก์ชันสำคัญเพราะมันกำหนดว่าโปรแกรมควรทำงานอย่างไร หากคุณเจอข้อผิดพลาด ERROR_ACCESS_DENIED บน Windows 10/11 เพียงทำตามคู่มือแก้ไขปัญหาข้างต้นเพื่อแก้ไขมัน