วิธีเรียกใช้แอปพลิเคชันในฐานะผู้ดูแลระบบในการดีบักด้วย Visual Studio


90

ฉันมีแอปพลิเคชั่น ac # ที่ฉันต้องมีสิทธิ์เข้าถึงรูทของไดรฟ์ C แบบอ่าน / เขียน ฉันรู้ว่าฉันสามารถคอมไพล์โค้ดและเรียกใช้ไฟล์ปฏิบัติการในฐานะผู้ดูแลระบบและใช้งานได้ แต่ฉันต้องการแก้ไขข้อบกพร่องและฉันไม่แน่ใจว่าจะเริ่มแอปภายใน Visual Studio ได้อย่างไร

ฉันได้ลองเพิ่ม:

<requestedExecutionLevel level="asInvoker" uiAccess="true" />

ไปยังไฟล์ Manifest ของฉัน แต่ฉันยังคงได้รับข้อผิดพลาดถูกปฏิเสธการเข้าถึง

นี่คือบรรทัดของรหัสที่ล้มเหลว:

MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(@"c:\somemapnamefile.data", System.IO.FileMode.OpenOrCreate, "somemapname", 1000);

ตอนนี้ฉันมีงานทำ แต่ฉันต้องการทราบอนาคต


3
หากคุณเรียกใช้ VS ในฐานะผู้ดูแลระบบทุกสิ่งที่คุณกำลังแก้ไขข้อบกพร่องจะทำงานในฐานะผู้ดูแลระบบด้วย
JMK

ฉันขอแนะนำการแก้ไขต่อไปนี้มิฉะนั้นคุณจะมีปัญหาในการเรียกใช้โซลูชันที่ตรึงไว้
JonnyRaa

ในกรณีของฉันฉันต้องไปที่ Compatability และเลือก run ใน Windows XP (Service Pack 3) การรัน IDE ในฐานะผู้ดูแลระบบไม่ได้ช่วยอะไร
เวนดี้

คำตอบ:


128

เพียงเรียกใช้ Visual Studio ในฐานะผู้ดูแลระบบ โปรแกรมใด ๆ ที่คุณดีบักจากที่นั่นจะถูกเรียกใช้ในฐานะผู้ดูแลระบบด้วย


13
ยังดีกว่าตั้งค่าทางลัด Visual Studio ให้ทำงานในฐานะผู้ดูแลระบบจากหน้าคุณสมบัติ
Panagiotis Kanavos

20
@PanagiotisKanavos โดยส่วนตัวฉันชอบที่จะหลีกเลี่ยงการทำงานในฐานะผู้ดูแลระบบเว้นแต่ฉันจะมีเหตุผลที่เฉพาะเจาะจงในการทำเช่นนั้น
Sam ฉันพูดว่า Reinstate Monica

1
ใช่. มีบางโปรแกรมที่ต้องมีผู้ดูแลระบบ และเมื่อฉันรัน VS ขอให้รีสตาร์ท VS ในโหมดผู้ดูแลระบบ ฉันไม่แน่ใจว่ามันเกิดขึ้นได้อย่างไร ฉันเพิ่งตั้งค่าระดับ = "requireAdministrator" แต่บางครั้งก็ไม่รีสตาร์ทโดยอัตโนมัติ
Jayson Ragasa

@SamIam: และหลังจากปรับใช้เว็บแอปแล้วต้องตั้งค่าแบบไหน ... ?
Ghanshyam Lakhani

1
แม้จะได้รับการยอมรับ แต่นี่ไม่ใช่วิธีแก้ปัญหาที่ถูกต้อง คุณไม่เรียกใช้โปรแกรมหรือ VS หรือสิ่งอื่นใดในฐานะผู้ดูแลระบบเว้นแต่จะจำเป็น คำถามเดิมเกี่ยวกับโปรแกรมที่ OP เขียนไม่ใช่ VS คำตอบที่ถูกต้องคือการระบุว่าโปรแกรมที่อยู่ระหว่างการพัฒนาต้องการสิทธิ์ของผู้ดูแลระบบ
Gábor

65

VS ต้องรันด้วยสิทธิ์ผู้ดูแลระบบ อย่างไรก็ตามวิธีที่สวยงามกว่าคือใน requiredExecutionLevel ใน manifest ควรตั้งค่าเป็น 'requireAdministrator'

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

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


1
ตรวจสอบให้แน่ใจว่าภายใต้แท็บความปลอดภัยของโปรเจ็กต์ของคุณไม่ได้ทำเครื่องหมายที่ "เปิดใช้งาน ClickOnce ... " มิฉะนั้นคุณจะได้รับคำเตือนด้านความปลอดภัยเมื่อคุณพยายามเรียกใช้รหัสที่ผู้ดูแลระบบต้องการ (การตั้งค่านั้นจะถูกตรวจสอบหากคุณได้คลิก "เผยแพร่" บนแอปของคุณแล้วในบางจุด)
monty

1
หมายเหตุ - หากไม่มีรายการให้เพิ่ม ฉันล้มเหลวที่จะตระหนักว่ามันอาจไม่มีอยู่จริง
Mołot

12

คุณยังสามารถตั้งค่าตัวเลือกผู้ดูแลระบบนี้โดยอัตโนมัติ:

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


1
ฉันคิดว่าคุณตั้งใจจะเน้นรายการ "คุณสมบัติ" ในเมนูบริบท แต่ทุกคนรู้ว่าคุณกำลังพูดถึงอะไร
Aaron Campbell

Compatibility > Run As Administratorวิธีที่ง่ายกว่าคือ
AStopher

1
นี่เป็นความคิดที่ไม่ดีพอสมควร คุณไม่ต้องการให้ Visual Studio ทำงานในฐานะผู้ดูแลระบบอย่างต่อเนื่อง
Jammer

1
ภาพหน้าจอนี้ไม่สามารถเข้าใจได้อย่างสมบูรณ์และไม่มีคำอธิบายประกอบไม่ว่าจะเป็นวิธีแก้ปัญหาที่ดีหรือไม่ก็ตาม
MickeyfAgain_BeforeExitOfSO

7

ในการตอบคำถามในชื่อของคุณคุณสามารถเลือก Run as Administrator จากเมนูบริบทเมื่อเริ่ม VS


4

ตอนนี้คำตอบที่ตรวจสอบจะไม่ทำงาน

คุณควรจะหาตัวเลือกสำหรับการนี้ในคุณสมบัติของโครงการLinker -> Manifest ไฟล์ -> UAC ดำเนินการระดับ ตั้งค่านี้เป็นrequireAdminstrator requireAdminstrator

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


1

"งานนี้ต้องใช้ที่จะมีการยกระดับสิทธิ์"ข้อผิดพลาดเกิดขึ้นเนื่องจากผู้ใช้ปัจจุบันไม่ได้มีสิทธิ์เพียงพอที่จะเปิด Visual Studio

เป็นการแก้ปัญหาชั่วคราว

คุณสามารถเอาชนะปัญหานี้ได้โดยคลิกขวาที่ visual studio และเลือก run as administrator ทุกครั้งที่คุณตั้งใจจะเปิด

ในฐานะที่เป็นทางออกที่ถาวร ,

คุณสามารถตรวจสอบการแก้ไขปัญหาความเข้ากันได้

  • คลิกขวาที่ Visual Studio> เลือกแก้ไขปัญหาความเข้ากันได้
  • เลือก Troubleshoot Program
  • ตรวจสอบโปรแกรมต้องการการอนุญาตเพิ่มเติม
  • คลิกที่ทดสอบโปรแกรม
  • รอสักครู่จนกระทั่งเปิดโปรแกรม คลิกถัดไป
  • เลือกใช่บันทึกการตั้งค่าเหล่านี้สำหรับโปรแกรมนี้

สำหรับขั้นตอนรายละเอียดเกี่ยวกับรูปภาพโปรดตรวจสอบVisual Studio ต้องการให้แอปพลิเคชันมีสิทธิ์ที่สูงขึ้น

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