การเปลี่ยนชื่อไฟล์โดยใช้โปรแกรมแบทช์ใน Vista / 7 ปัญหาการเข้าถึงของผู้ดูแลระบบ


0

ฉันมีไฟล์แบตช์ที่เปลี่ยนชื่อไฟล์ในโฟลเดอร์โดยใช้:

rename filename.exe filename.bac

สิ่งนี้ทำงานได้ดีใน Win XP แต่ใน Vista / 7 หากไฟล์แบตช์ทำงานภายใต้ Program Files / มันจะไม่เปลี่ยนชื่อไฟล์เว้นแต่ว่าฉันจะเรียกใช้ในฐานะผู้ดูแลระบบ มีวิธีใดที่จะเลี่ยงผ่าน UAC และใช้สิ่งนี้โดยไม่จำเป็นต้องเรียกใช้ในฐานะผู้ดูแลระบบหรือไม่?

ขอบคุณ

คำตอบ:


1

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

คุณสามารถปิดการใช้งาน uacหากคุณต้องการ แต่นี่เป็นความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น


ดังนั้นคุณกำลังบอกฉันว่าไม่มีวิธีการเปลี่ยนชื่อไฟล์โดยไม่ต้องเรียกใช้ภายใต้ผู้ดูแลระบบหรือไม่

2
ควรสังเกตว่าการปิดใช้งาน UAC นั้นไม่ได้รับการสนับสนุนด้วยเหตุผลที่ชัดเจน
Joey

1
ใช่คุณต้องเรียกใช้ในฐานะผู้ดูแลระบบหากคุณต้องการเปลี่ยนแปลงสิ่งต่างprogram filesๆ นั่นคือจุดสำคัญของ UAC - ป้องกันผู้ที่ไม่ใช่ผู้ดูแลระบบทำการเปลี่ยนแปลงไฟล์โปรแกรม
nhinkle

1

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

  • ยกระดับไฟล์แบตช์เสมอเมื่อคุณเรียกใช้ Run this task with highest privilegesถ้ามันจะถูกนำมาใช้เป็นงานที่กำหนดคุณสามารถตรวจสอบกล่องสำหรับ

  • ใช้สคริปต์ powertoyยกระดับWindows Vista / 7 เพื่อยกระดับเพียงคำสั่งนั้น

  • เปลี่ยนการอนุญาตในไดเรกทอรีย่อยนั้นของprogram filesอนุญาตให้ผู้ใช้ปกติเปลี่ยนชื่อไฟล์

    ในการทำเช่นนี้ไปที่ไดเรกทอรีพร้อมไฟล์ที่คุณจะเปลี่ยนชื่อ Propertiesคลิกขวาที่โฟลเดอร์และคลิกที่ ไปที่แท็บความปลอดภัย คลิกแล้วadvanced Change PermissionsคลิกAddและเลือกบัญชีที่จะใช้งานไฟล์แบตช์ ให้สิทธิ์บัญชีที่จำเป็น - อาจcreate filesและdelete filesอย่างน้อยที่สุด จากนั้นคลิกOKอย่างไรก็ตามหลายครั้งคุณจำเป็นต้องปิดกล่องโต้ตอบทั้งหมด บัญชีที่ระบุจะสามารถแก้ไขไฟล์ในโฟลเดอร์นั้นได้โดยไม่จำเป็นต้องยกระดับ

  • ปิดใช้งาน UAC นี้จะไม่แนะนำให้เป็นมันใบระบบของคุณมีช่องโหว่


0

ลองดูที่เครื่องมือยกระดับ

http://technet.microsoft.com/en-us/magazine/2007.06.utilityspotlight.aspx

ฉันใช้เครื่องมือนี้เพื่อเรียกใช้แบตช์ไฟล์ต่างๆที่ปกติแล้วต้องใช้ในพรอมต์ผู้ดูแลระบบ ปรากฎว่าถ้าคุณส่งกริยา "runas" ไปที่ ShellExecute API หรือเทียบเท่า COM วิธี ShellExecute ของ Shell.Application แอปพลิเคชั่นที่เปิดตัวจะแจ้งให้ยกระดับเครื่องมือนี้ (ซึ่งประกอบด้วยไฟล์ ElevateCommand.inf elevate.cmd และ elevate.vbs) เพิ่มคำสั่งยกระดับให้กับระบบของคุณ สิ่งนี้ช่วยให้คุณเปิดใช้งานแอปพลิเคชันที่พร้อมท์สำหรับการยกระดับจากบรรทัดคำสั่งสคริปต์หรือกล่องโต้ตอบเรียกใช้ ตัวอย่างเช่นคำสั่งต่อไปนี้จะเปิด Win.ini ด้วย Notepad (หลังจากพร้อมท์เพื่อยกระดับ):

elevate notepad c:\Windows\Win.ini

เมื่อใช้คำสั่ง elevate กับ Windows Script Host (WSH), Windows PowerShell ™หรือสคริปต์อื่น ๆ คุณจะต้องระบุโฮสต์สคริปต์ที่สามารถเรียกใช้งานได้ (เช่น wscript, cscript หรือ powershell) เป็นแอปพลิเคชัน หากต้องการเรียกใช้ vbs คุณจะต้องใช้สิ่งนี้:

elevate wscript “C:\windows\system32\slmgr.vbs” –dli

ข้อความช่วยเหลืออธิบายสิ่งนี้ ใช้ยกระดับด้วย - หรือไม่ หรือไม่มีพารามิเตอร์เพื่อดูข้อความช่วยเหลือ

สิ่งที่ทำให้ระคายเคืองครั้งต่อไปคือไม่มีตัวเลือกเมนูบริบท "Run as Administrator" (เมื่อคุณคลิกขวาที่ไฟล์ใน Explorer) สำหรับประเภทสคริปต์ Windows ส่วนใหญ่ ข้อยกเว้นหนึ่งข้อสำหรับสคริปต์คำสั่งเชลล์ (ที่มีนามสกุลไฟล์. bat และ. cmd) ดังนั้นฉันจึงออกเดินทางเพื่อตรวจสอบเรื่องนี้ ตัวเลือกเมนูบริบทสำหรับประเภทไฟล์จะถูกควบคุมผ่านปุ่มคำสั่งสำหรับประเภท "วัตถุ" ในส่วน HKEY_CLASSES_ROOT ของ Registry (ดูรายละเอียดของคำกริยาและความสัมพันธ์ของไฟล์ในแถบด้านข้าง) ปรากฎว่าถ้าคีย์คำสั่งนั้นมีชื่อว่า runas คำสั่งที่เรียกใช้จะแจ้งให้ยกระดับ

ยกระดับแอปพลิเคชัน HTML PowerToy (ElevateHTA.inf)

ยกระดับสคริปต์ Windows PowerShell PowerToy (ElevatePowerShellScript.inf)

ยกระดับ WSH สคริปต์ PowerToy (ElevateWSHScript.inf, elevate.cmd, elevate.vbs)

PowerToys เหล่านี้เพิ่มรายการเมนูบริบทบริบท Run เป็นผู้ดูแลระบบ Explorer สำหรับ HTAs, Windows PowerShell และ Windows Script Host ตามลำดับ ElevateWSHScript.inf ยังเพิ่มรายการ Run as Administrator ด้วย Command Prompt menu (โปรดอ่านหมายเหตุใน ElevatePowerShellScript.inf ก่อนติดตั้ง)

ตรวจสอบให้แน่ใจว่าได้ดึงของเล่นกำลังลงใน c: \ Windows \ System32 หรือถ้าคุณวางเครื่องมือไว้ที่อื่นให้เพิ่มไดเรกทอรีลงในตัวแปร $ PATH ของคุณเพื่อให้คุณสามารถเรียกมันเข้าไปในสคริปต์ชุดงานได้อย่างง่ายดาย

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