การเขียนโปรแกรม Windows - คุณควรเปิด UAC ไว้หรือไม่


11

การตั้งค่าการควบคุมบัญชีผู้ใช้ที่แนะนำ (UAC) คืออะไรเมื่อพัฒนาบน Windows

แม้ใน Win7 ฉันพบว่ามันน่ารำคาญพอที่จะปิด (เพราะทำให้ฉันมีประสิทธิภาพมากขึ้นด้วย) แต่บางครั้งฉันก็รู้สึกไม่ดีเพราะฉันรู้ว่าฉันจะพบปัญหามากขึ้นในรหัสของฉันถ้าฉันปล่อยไว้


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

คำตอบ:


16

คำแนะนำ (แม้จะมาจาก Microsoft) ก็คือเปิดไว้และเรียกใช้ IDE ที่ไม่ได้รับการแก้ไขเมื่อใดก็ตามที่เป็นไปได้

ก่อนอื่นมันบังคับให้โปรแกรมเมอร์ใช้ชีวิตอยู่กับ "รำคาญ" แบบเดียวกับที่ผู้ใช้ในโลกแห่งความเป็นจริงจะมี (ถ้าคุณไม่รู้คุณจะโปรแกรมรอบ ๆ มันให้ถูกต้องหรือไม่)

จากนั้นการปิดใช้งาน UAC และการทำงานในฐานะผู้ดูแลระบบนั้นไม่ดีเท่าใน Unix เพื่อทำงานในระดับราก (ภูมิปัญญาทั่วไปหลายทศวรรษจะบอกคุณว่าทำไมมันถึงไม่ดี)


4
Windows ไม่ใช่ลินุกซ์ที่ไม่ได้จริงๆเปรียบเทียบที่ดี ..
โทมัส Bonini

9
@Kop: การรันด้วยสิทธิพิเศษเต็มรูปแบบอาจดีหรือไม่ดีไม่ว่า OS จะเป็นอย่างไร ... ฉันไม่เห็นว่า Windows และ UNIX / Linux แตกต่างกันอย่างไร
Wizard79

1
@Brian: ยังมีไลบรารีบางส่วนที่ต้องการสิทธิ์ผู้ดูแลระบบ (เช่นการพัฒนาสำหรับ Azure) แต่งานส่วนใหญ่สามารถทำได้ในฐานะที่ไม่ใช่ผู้ดูแลระบบ
Agent_9191

2
@Walter: คุณสามารถสร้างบริการ windows ได้โดยไม่ต้องยกระดับ คุณต้องมีสิทธิ์ในระดับสูงในการติดตั้ง / ถอนการติดตั้งบริการ คุณไม่ควรติดตั้งบางสิ่งโดยตรงจาก IDE ต่อไปดังนั้นพรอมต์คำสั่งที่ยกระดับจะทำงานได้ดีขึ้นเนื่องจากเป็นสิ่งที่ผู้เชี่ยวชาญด้านไอทีจะใช้
Agent_9191

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

4

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


ปัญหาคือถ้าคุณปิด UAC คุณควรมีเครื่องเฉพาะหรือเครื่องเสมือนที่เปิดอยู่สำหรับการทดสอบ
Wizard79

แม้ว่า UAC จะปิดอยู่บัญชีที่ จำกัด จะยังคงให้คุณทดสอบสิทธิ์แบบ จำกัด
เจลาติน

2
คุณต้องทดสอบทั้งสถานการณ์ที่ไม่ได้รับสิทธิพิเศษและไม่ได้รับสิทธิพิเศษ
Ben Voigt

4

ฉันทำงานบน Windows 7 และฉันเปิด UAC และบัญชีของฉันไม่ใช่บัญชีผู้ดูแลที่แท้จริง ดังนั้นเมื่อฉันชนเข้าสู่ UAC ฉันต้องป้อนรหัสผ่านของผู้ดูแลระบบเพื่อดำเนินการต่อ แม้แต่ภายใต้ Vista ฉันยังคงเก็บมันไว้ ฉันได้ยินผู้พัฒนาหลายคนบอกว่ามันเข้ามาขวางทาง แต่ฉันยังไม่เห็นมัน ภายใต้ Vista มันเป็นปัญหาที่ใหญ่กว่าเนื่องจากมีหลายพื้นที่ที่เข้มงวดเกินไป

คำถามที่ฉันมักจะพูดถึงเมื่อนักพัฒนาบอกว่า UAC เข้ามาขวางทางคือ "คุณกำลังทำอะไรอยู่ หากคุณพยายามจัดการไฟล์ในโฟลเดอร์ระบบ (Windows, ไฟล์โปรแกรม, ไซต์ IIS) แสดงว่าคุณทำอะไรผิด เว็บไซต์ IIS สามารถอยู่นอก C: \ inetpub ฐานข้อมูลผู้ใช้ SQL Server สามารถมีอยู่นอก Program Files ครั้งเดียวที่คุณควรเป็นประจำเห็น UAC พรอมต์คือการติดตั้งแอพลิเคชันและการปรับปรุง หากคุณเห็นบ่อยขึ้นคุณอาจทำงานกับระบบมากกว่าใช้งาน


2
Visual Studio จะไม่ยอมให้คุณเปิดโครงการเว็บแอปพลิเคชั่น IIS ซึ่งโฮสต์อยู่เว้นแต่ว่าจะมีการยกระดับ
Heinzi

หากต้องการขยายจุดของ @ Heinzi หากฉันเรียกใช้แอปพลิเคชันเดียวกันสองเวอร์ชัน (เช่นสาขา SVN สองสาขาซึ่งแต่ละสาขาเก็บไว้ในตำแหน่งที่ตั้งอื่น) คุณต้องใช้ VS studio เพื่อตั้งค่า IIS ไปยังโฟลเดอร์ที่ถูกต้องที่คุณทำงานอยู่ (เช่นทางออกสุดท้ายที่คุณเปิดของสองรายการนี้) หากไม่มีสิทธิ์ยกระดับคุณไม่เพียง แต่ต้องอัพเดท IIS ด้วยตนเองเท่านั้นคุณยังเสี่ยงต่อการลืมและทดสอบแอปพลิเคชั่นรุ่นที่แตกต่างอย่างสิ้นเชิง (ในเบราว์เซอร์) ที่คุณพัฒนาอยู่ (ใน VS)
Flater

1

IMHO มันจะทำให้คุณเดือดร้อน

ในงานปัจจุบันของฉันฉัน dev เว็บแอปและบริการ windows เพราะการที่ฉันพบว่าตัวเองมีประสิทธิผลมากขึ้นกับมันออก หากฉันกำลังทำงานกับแอพที่ผู้ใช้จะติดตั้งฉันจะปล่อยไว้เพื่อที่ฉันจะได้ใกล้เคียงที่สุดกับสิ่งที่ผู้ใช้จะได้สัมผัส


การออกจาก UAC เป็นอย่างไร การพัฒนาแอปพลิเคชันเว็บไม่ควรต้องมีสิทธิ์ผู้ดูแลระบบยกเว้นการตั้งค่า IIS ในตอนแรก บริการ Windows จะต้องมีสิทธิ์ผู้ดูแลระบบในการเริ่มต้นและหยุด แต่ผ่านหน้าต่างคำสั่งเดียวและnet start/stopคุณมีพรอมต์ UAC เดียว มิฉะนั้นคุณควรมีตรรกะที่สร้างขึ้นเพื่อให้คุณมีนักวิ่งบรรทัดคำสั่งและ Win Service Runner
Agent_9191

มันไม่ได้ช่วยในการพัฒนา แต่มันช่วยลดความน่ารำคาญของ UAC หากคุณไม่ต้องการใช้เพื่อจำลองการเข้าถึงที่ต่ำให้ปิดเครื่อง ไม่เช่นนั้นปล่อยไว้

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