เปิด access คนละเวอร์ชั่น
กระทู้เก่าบอร์ด อ.Yeadram

 1,706   15
URL.หัวข้อ / URL
เปิด access คนละเวอร์ชั่น

ผมเขียน access2010 ใน win7 32 bit/office 32 bit
แล้วนำไปเปิดอีกเครื่องที่เป็น access2016 ใน win10 64 bit/office 32 bit
เปิดไฟล์ปุ๊บมันมี ทหเฺนป ฟ้องแบบนี้
Unable to registry HKLM\SOLFWARE\Microsolf\Windows NT\CurrentVersion\DigitalProductId" for reading.
ขอสอบถามครับ
1. สาเหตุนี้เกิดจากอะไร
2. วิธีการแก้ไข

15 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R23901
มีการเขียนโค้ดไปตรวจสอบ registry ของ Windows เรื่องเกี่ยวกับ Key Product ID หรือเปล่าครับ เช่นโค้ดที่เป็นพวก VBScript ที่เว็บเก่าๆเคยแจกให้ใช้กัน
แต่ใน Windows 10 จะใช้ไม่ได้นะครับ มันจะไม่ยอมให้อ่าน registry บางค่าผ่านการเขียนผ่านโปรแกรมทุกประเภท ต้องเรียกเป็น Script ที่ใช้การเรียกจาก .vbs
2 @R23904
1. สิทธิในการเข้าถึงของ User ว่ามีสิทธิหรือเปล่า เป็น Admin หรือเปล่า
2. ลองดูใน Trust center setting ของ Access ว่ามีการห้ามไว้หรือไม่ ลองเปิด Enavle all macro ดูครับ
3 @R23905
ขอบพระคุณอาจารย์ทั้งสองท่านครับ
4 @R23920
เรียนอาจารย์ทั้งสองท่าน ตามกระทู้ http://thai-access.com/yeadram_view.php?topic_id=5597
มน win10 จะใช้ไม่ได้ตาม อาจารย์TTT บอก เรามีวิธีอื่นไหมครับ ที่สามารถให้มันทำได้ใน win10
5 @R23922
เครื่องผมเป็น win 10 นะครับ ทดสอบแล้วอ่านได้ฉลุย อาจจะเป็นไปได้ว่าเกิดจากว่ายังไม่มี ProductID หรือยังไม่ได้ใส่คีย์ไว้ เลยยังไม่มีหมายเลขดังกล่าว (พวก win เถื่อนทั้งหลายนะครับ)
6 @R23926
การที่ Windows 10 อ่าน Key ID ไม่ได้แสดงว่า Windows คุณปลอดภัย ไม่ควรไปพยายามให้มันรันได้จะดีกว่านะครับ ลองคิดดูถ้าหากผมส่งไฟล์ Excel Word Access ไปให้คุณโดยใส่สคิปพวกนี้ ให้มันรันอัตโนมัติ ผมสามารถให้มัน Return ค่ากลับมาให้ผมได้เลย หากคุณต่อเน็ท โดยผ่านหน้าเพ็จที่ผมเปิดไว้รับค่าง่ายๆเลยนะครับ ผมว่า Windows 10 จึงพยายามแก้ปัญหาพวกนี้ ซึ่งสมัย xp โดนแฮกกันเยอะมาก แต่ถ้าคุณเขียนเป็น สคลิปไฟล์ vbs อ่านได้นะครับ แต่ต้องกดเรียกเอา แค่จะไม่ยอมให้รันแฝงผ่านโปรแกรมอื่น

ว่าแต่คุณจะหา Product ID ไปเพื่อทำอะไรหรือครับ?
7 @R23934
* เรียนอาจารย์ TTT เอาไว้บังคับให้โปรแกรมที่เราเขียนไว้ ลงได้เฉพาะเครื่องที่เป็น Key ID นี้เท่านั้น (ไม่ทราบแนวคิดผมมันถูกต้องหรือเปล่า)
- ขอบพระคุณอาจารย์ TTT และ อาจารย์ pizza_p ครับ
8 @R23935
ใช้ Drive serial number แทนครับ Product ID มันเป็นคีย์เฉพาะตัวของผู้ถือสิทธิไม่ควรไปยุ่งเกี่ยวด้วย

ตัว Drive serial number หาได้จาก

MyProject_Driveserial = DriveSerial(CurrentProject.Path)

Public Function DriveSerial(drvpath As String) As String
Dim fs As Object, d As Object

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
    DriveSerial = d.SerialNumber

End Function
9 @R23936
ขอบพระคุณอาจารย์ pizza_p ครับ
10 @R23937
มันก็ขึ้นอยู่กับว่าคุณจะยึดอะไรนะครับ เช่น ถ้าคุณใช้

- Product ID หากเปลี่ยน Windows เป็นเวอร์ชั่นใหม่ เลขก็จะเปลี่ยน
- HDD Serial หากเปลี่ยน HDD เลขก็จะเปลี่ยน
- BIOS Serial Number หากเปลี่ยนเมนบอร์ดใหม่ เลขก็จะเปลี่ยน

แล้วแต่ว่าคุณจะเก็บค่าอะไร แต่ที่นิยมแนะนำในเว็บก็จะเป็น HDD Serial และก็ BIOS Serial Number

ทั้งหมดอยู่ที่แนวคิดของคุณ ปรับใช้ดูครับ
11 @R23996
เรียนอาจารย์ทั้ง 2 ท่าครับ ได้โค๊ตจาก อาจารย์ pizza_p
แต่การดู Drive serial number จะคลิกดูได้จากไหน ในวินโดวส์ครับ ผมได้หาดูใน กูเกิ้้ล แล้วไม่เจอวิธีการดูครับ
12 @R23997
เปิดหน้า command line ขึ้นมา (โดยการรัน cmd)

พิมพ์คำสั่ง vol

C:\Users>vol
Volumn Serial Number is xxxx-xxxx

Function ที่ผมให้ไป สามารถแปลงเป็นรูป Hex เหมือนที่แสดงใน command line ได้โดยเปลี่ยนบรรทัดสุดท้ายเป็นแบบนี้

MyProject_Driveserial = DriveSerial(CurrentProject.Path)

Public Function DriveSerial(drvpath As String) As String
Dim fs As Object, d As Object

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
    DriveSerial = Left(Hex(d.SerialNumber), 4) & "-" & Right(Hex(d.SerialNumber), 4)

End Function
13 @R24000
ลองแล้วครับ แต่ไม่ตรงกับ ใน command line
ต้องแก้ไขอย่างไรครับ
14 @R24004
Currentproject.Path อันนี้คือ path ที่รัน Project อยู่นะครับ ถ้าอยู่ใน Drive D: มันก็จะได้ serial number ของ Drive D: นะครับ ส่วนใน command line จะเป็น serial ของ Drive C: ครับ เพราะเรียกจาก C: แต่ละ Drive จะมี serial number ไม่เหมือนกัน
15 @R24018
ขอบพระคุณอย่างสูงครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2664s