วิธีลงชื่อไฟล์แบตช์ (.bat) ของ Windows


8

ฉันใช้ Windows 7 และเมื่อฉันพยายามเรียกใช้แบตช์ไฟล์จะมีข้อความว่า "ผู้เผยแพร่ไม่สามารถตรวจสอบได้คุณแน่ใจหรือไม่ว่าคุณต้องการใช้งานซอฟต์แวร์นี้"

ดังนั้นเมื่อฉันพยายามเซ็นชื่อด้วยใบรับรองการเซ็นชื่อรหัสของฉันมันบอกว่า "SignTool Error: รูปแบบไฟล์นี้ไม่สามารถเซ็นเพราะไม่รู้จัก"

ดังนั้นฉันจึงติดอยู่ระหว่างหินและสถานที่ที่ยากลำบาก มีวิธีกำจัดข้อความใดข้อความหนึ่งหรือไม่?

ภาพหน้าจอ


1
เขียนใหม่เป็นสคริปต์ PowerShell แล้วเซ็นชื่อใช่ไหม ฉันไม่เคยได้ยินชื่อแบตช์ไฟล์มาก่อนเลย
Iszi

คุณไม่ได้ลงชื่อไฟล์แบตช์ ดูเหมือนว่าไฟล์แบทช์ของคุณกำลังเรียกอย่างอื่นที่ควรเซ็นชื่อ
Mark Allen

1
ที่มาของพรอมต์คืออะไร นั่นคือแถบชื่อและไอคอนคืออะไร? จริง ๆ แล้วเป็นพรอมต์ Windows หรือพรอมต์จากโปรแกรมความปลอดภัยของ บริษัท อื่นใช่หรือไม่ ถ่ายภาพหน้าจอของมันและเพิ่มลงในคำถาม
Synetech


@ SeanCheshire หากเป็นเช่นนั้น techturtle นั้นถูกต้อง ทุกอย่างในเครือข่ายจะดูด้วย Windows ที่น่าสงสัยดังนั้นคุณจะต้องคัดลอกภายในเครื่องหรือเพิ่มที่ตั้งลงในโซนที่เชื่อถือได้
Synetech

คำตอบ:


4

ฉันได้รับข้อความที่คล้ายกันหากฉันเรียกใช้ไฟล์แบตช์ (หรือไฟล์ปฏิบัติการอื่น) จากตำแหน่งเครือข่าย หากเป็นกรณีนี้คุณอาจต้องการลองย้ายมันไปที่ไดรฟ์ในเครื่อง อีกทางเลือกหนึ่งคือการใช้แบตช์ไฟล์แยกต่างหากบนโลคัลไดรฟ์เพื่อเปิดไฟล์ในเครือข่าย ไฟล์แบตช์ที่เรียกใช้ต้องการเพียงหนึ่งบรรทัดเท่านั้น:

@call \\network\folder\batch.bat

Windows จะไม่หยุดชะงักที่ไฟล์ในเครื่องและเมื่อไฟล์นั้นทำงานอยู่ไฟล์ดังกล่าวจะสามารถเรียกรุ่นเครือข่ายได้โดยไม่มีปัญหา


@Sosukodo ดังนั้นE:ไดรฟ์ที่แมปเครือข่ายคืออะไร
Synetech

Sort-of ;-) ฉันใช้งาน VirtualBox Windows 7 บนโฮสต์ Mac E: เป็นโฟลเดอร์ที่ใช้ร่วมกันของ VirtualBox ฉันไม่ทราบว่าโฟลเดอร์ที่ใช้ร่วมกันนั้นจะถือว่าเป็นไดรฟ์เครือข่าย แต่เมื่อคุณพูดถึงมันก็สมเหตุสมผลแล้ว

4

คุณไม่ได้ลงชื่อไฟล์แบตช์ ดูเหมือนว่าไฟล์แบทช์ของคุณกำลังเรียกอย่างอื่นที่ควรเซ็นชื่อ

แก้ไข: เมื่อคุณโพสต์ไฟล์แบตช์แล้วเราจะเห็นว่าเป็นเพราะตำแหน่งเครือข่าย หรือบางครั้งจะเกิดขึ้นหากคุณเพียงคัดลอกไฟล์จากตำแหน่งเครือข่าย ในกรณีหลังเป็นเพราะ Windows ติดแท็กไฟล์ผ่านสตรีมข้อมูลสำรองเพื่ออยู่ในโซนอินเทอร์เน็ตอื่น คุณสามารถหลีกเลี่ยงหนึ่งในสองวิธีนี้:

  1. เปลี่ยนโซนความปลอดภัยของคุณใน Internet Explorer สำหรับโซนอินทราเน็ต
  2. ใช้คำสั่ง type เพื่อทำลาย Alternate Data Stream สำหรับไฟล์ (นอกจากนี้ยังมี streams.exe จาก Sysinternals ที่สามารถทำได้) type thefile.bat > %temp%\newfile.bat & type %temp%\newfile.bat > thefile.bat

3

สิ่งที่คุณเห็นคือพรอมต์ทั่วไปที่ Windows มีให้เมื่อใดก็ตามที่คุณพยายามเปิดทุกครั้งที่มีการดาวน์โหลดไฟล์ สิ่งที่เกิดขึ้นคือเมื่อคุณดาวน์โหลดไฟล์จะมีการติดแท็กด้วยธงที่ระบุว่ามาจากอินเทอร์เน็ตและอาจเป็นอันตราย เมื่อคุณพยายามเรียกใช้ไฟล์ดังกล่าว Windows จะตรวจสอบว่ามีลายเซ็นที่ถูกต้องหรือไม่เพื่อตรวจสอบว่าเชื่อถือได้หรือไม่

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

ป้อนคำอธิบายรูปภาพที่นี่


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

ดังนั้นการเซ็นชื่อแบตช์ไฟล์จะไม่ทำงาน

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

ตรวจสอบเนื้อหาของแบตช์ไฟล์เพื่อดูว่ากำลังเรียกใช้ไฟล์ปฏิบัติการที่ไม่ได้ลงนามหรือไม่ (โดยค่าเริ่มต้น Windows จะไม่แสดงข้อความเตือนหากมีการดาวน์โหลดหรือจำเป็นต้องมีสิทธิ์ในการยกระดับดังนั้นตรวจสอบการตั้งค่าของคุณ)


คุณควรจะสามารถออกจากสคริปต์ก่อนที่จะถึงการดำเนินการลายเซ็นไม่ใช่?
Sparr

@ Sparr ใช่และไม่ใช่ คุณสามารถแทรกgoto :eofก่อนหน้าลายเซ็นได้ แต่จากนั้นจะเปลี่ยนแฮชของไฟล์และทำให้ลายเซ็นไม่ถูกต้องและทำให้ไฟล์นั้นเสียหาย / ไม่ปลอดภัย ฉันคิดว่าคุณสามารถมีบรรทัดที่ส่วนท้ายของไฟล์ก่อนที่จะเซ็นชื่อแม้ว่าและมันควรจะทำงาน การทดลองที่น่าสนใจที่จะลอง ...
Synetech

2
คุณสามารถใช้คำสั่งพิมพ์ - แม้กระทั่งบนไบนารี - เพื่อปลดแท็กไฟล์ ฉันทำมันตลอดเวลา พิมพ์ oldfile> newfile (แล้ว) พิมพ์ newfile> oldfile ผลลัพธ์ใน oldfile โดยไม่มีแท็ก ADS
Mark Allen

ฮิฮิฉลาด นั่นไม่ใช่เทคนิคในการลอกธง (และฉันไม่แน่ใจว่ามันเร็วกว่าหรือสะดวกกว่ากล่องโต้ตอบPropertiesแต่ใช้งานได้)
Synetech

0

คุณยังสามารถแปลงไฟล์. bat เป็นสคริปต์ PowerShell ได้เช่นกัน signtool รองรับการลงชื่อไฟล์เหล่านี้


สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม หากต้องการวิจารณ์หรือขอคำชี้แจงจากผู้แต่งโปรดแสดงความคิดเห็นใต้โพสต์ของพวกเขา - จากการรีวิว
Burgi

@Burgi นี่เป็นปัญหาไฟล์. bat ไม่สามารถลงชื่อได้เว้นแต่จะมีคนเขียน SIP เฉพาะ โซลูชันที่ใกล้เคียงที่สุดสำหรับตอนนี้คือสคริปต์ PowerShell ที่ลงชื่อแล้ว
Emmanuel Bourg

กฎข้อที่ 42 ของ Fight Club คือ "การแก้ไขปัญหาคือคำตอบ" นี่คือคำตอบ (แต่อีกอันดีกว่า)
Scott
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.