ฉันไม่เชื่อว่าจะสามารถยกระดับกระบวนการที่กำลังทำงานอยู่ได้ มีอยู่ใน Windows Vista ซึ่งสิทธิ์ของผู้ดูแลระบบจะมอบให้กับกระบวนการเมื่อเริ่มต้นทำงานตามที่ฉันเข้าใจ หากคุณดูโปรแกรมต่างๆที่ใช้ UAC คุณจะเห็นว่าพวกเขาเปิดกระบวนการแยกต่างหากทุกครั้งที่ต้องดำเนินการด้านการดูแลระบบ (ตัวจัดการงานคือหนึ่ง Paint.NET เป็นอีกโปรแกรมหนึ่งซึ่งเป็นแอปพลิเคชัน. NET ในความเป็นจริง ).
วิธีแก้ปัญหาโดยทั่วไปสำหรับปัญหานี้คือการระบุอาร์กิวเมนต์บรรทัดคำสั่งเมื่อเรียกใช้กระบวนการที่ยกระดับ (คำแนะนำของ abatishchev เป็นวิธีหนึ่งในการดำเนินการนี้) เพื่อให้กระบวนการที่เรียกใช้ทราบเฉพาะการแสดงกล่องโต้ตอบบางกล่องจากนั้นจึงออกหลังจากการดำเนินการนี้ เสร็จสมบูรณ์ ดังนั้นผู้ใช้จึงแทบไม่ควรสังเกตเห็นว่ามีการเปิดตัวกระบวนการใหม่แล้วออกไปและค่อนข้างจะดูเหมือนว่ามีการเปิดกล่องโต้ตอบใหม่ภายในแอปเดียวกัน (โดยเฉพาะอย่างยิ่งหากคุณแฮ็กเกอร์สร้างหน้าต่างหลักของ ยกระดับกระบวนการลูกของกระบวนการหลัก) หากคุณไม่ต้องการ UI สำหรับการเข้าถึงแบบยกระดับยิ่งดี
สำหรับการสนทนาเต็มรูปแบบของ UAC บน Vista ฉันขอแนะนำให้คุณอ่านบทความนี้ในหัวข้อนี้ (ตัวอย่างโค้ดอยู่ใน C ++ แต่ฉันสงสัยว่าคุณจะต้องใช้ WinAPI และ P / Invoke เพื่อทำสิ่งต่างๆใน C # อย่างไรก็ตาม). หวังว่าอย่างน้อยตอนนี้คุณจะเห็นแนวทางที่ถูกต้องแม้ว่าการออกแบบโปรแกรมที่สอดคล้องกับ UAC นั้นยังห่างไกลจากเรื่องเล็กน้อย ...