Lập trình Windows - bạn có nên rời UAC không?


11

Cài đặt Kiểm soát tài khoản người dùng (UAC) được đề xuất khi phát triển trên Windows là gì?

Ngay cả trên Win7 tôi cũng thấy khó chịu khi tắt nó đi (vì nó làm tôi hiệu quả hơn khi tắt nó) nhưng đôi khi tôi cảm thấy tồi tệ vì tôi biết tôi sẽ gặp nhiều vấn đề hơn trong mã của mình nếu tôi để nó.


"Nó hoạt động trên máy của tôi!" Phản hồi kinh điển từ một nhà phát triển được nói về một vấn đề với phần mềm của anh ta. Điều này có thể là do sự khác biệt về quyền truy cập, tài nguyên phần cứng hoặc thư viện được cài đặt (và sau đó là một số). Chỉ cần cố gắng nhận thức được những hạn chế có thể có của máy người dùng so với máy của bạn và kiểm tra xem bạn có thể trước khi phát hành không. Bởi vì ... "Chúng tôi sẽ không vận chuyển máy của bạn!"
Martin Maat

Câu trả lời:


16

Đề xuất (thậm chí từ Microsoft) là để nó BẬT và cũng để chạy IDE của bạn không bị ràng buộc bất cứ khi nào có thể.

Trước hết, nó buộc lập trình viên phải sống với cùng một "phiền toái" mà một người dùng trong thế giới thực sẽ có (nếu bạn không biết điều đó, bạn có lập trình chính xác xung quanh nó không?).

Sau đó, vô hiệu hóa UAC và làm quản trị viên cũng tệ như trong Unix để hoạt động như root (hàng thập kỷ khôn ngoan sẽ cho bạn biết lý do tại sao điều đó xấu).


4
Windows không phải là linux, đó không thực sự là một so sánh tốt ..
Thomas Bonini

9
@Kop: chạy với đầy đủ các đặc quyền là tốt hoặc xấu bất kể HĐH ... Tôi không thể thấy Windows và UNIX / Linux khác nhau như thế nào.
Wizard79

1
@Brian: Vẫn còn một số thư viện yêu cầu quyền quản trị viên (chẳng hạn như phát triển cho Azure), nhưng phần lớn các tác vụ có thể được thực hiện dưới dạng không phải quản trị viên.
Đặc vụ_9191

2
@Walter: bạn có thể tạo các dịch vụ windows không nâng cao. Bạn cần quyền nâng cao để cài đặt / gỡ cài đặt dịch vụ mặc dù. Bạn không bao giờ nên cài đặt một cái gì đó trực tiếp từ IDE, vì vậy, một dấu nhắc lệnh nâng cao hoạt động tốt hơn vì đó là những gì Ưu điểm CNTT sẽ sử dụng.
Đặc vụ_9191

2
@zneak: bạn sai rồi. Từ quan điểm kỹ thuật là người dùng root của Quản trị viên (hoặc quản trị viên nâng cao với UAC) là hoàn toàn giống nhau. Tất nhiên bạn không thể sử dụng lệnh định dạng trên phân vùng hệ thống, nhưng đây chỉ là một lựa chọn UI. Bạn có thể sử dụng chương trình của bên thứ ba định dạng xóa sạch phân vùng hệ thống hoặc bất cứ thứ gì khác.
Wizard79

4

Bất kể bạn bật hay tắt chương trình, bạn nên kiểm tra chương trình của mình bằng tài khoản người dùng hạn chế. Điều này sẽ nắm bắt hầu hết các vấn đề mà người dùng có thể gặp phải khi chạy chương trình của bạn với tài khoản bị giới hạn hoặc bật UAC.


Vấn đề là, nếu bạn có UAC TẮT, bạn nên có một máy chuyên dụng hoặc máy ảo có BẬT để kiểm tra.
Wizard79

Ngay cả khi UAC bị tắt, một tài khoản bị giới hạn vẫn sẽ cho phép bạn kiểm tra các đặc quyền hạn chế.
Gelatin

2
Bạn cần kiểm tra cả các tình huống không được ưu tiên và không có đặc quyền.
Ben Voigt

4

Tôi đang chạy trên Windows 7 và tôi rời UAC và tài khoản của tôi không phải là tài khoản quản trị viên thực sự. Vì vậy, khi tôi va vào UAC, tôi phải nhập mật khẩu quản trị viên để tiếp tục. Ngay cả dưới Vista tôi vẫn giữ nó. Tôi đã nghe một số nhà phát triển nói rằng nó cản trở, nhưng tôi chưa thấy điều đó. Trong Vista, đó là một vấn đề lớn hơn vì một số lĩnh vực hơi quá hạn chế.

Câu hỏi tôi luôn đưa ra khi các nhà phát triển nói rằng UAC gặp rắc rối là "Bạn đang làm gì mà bạn tiếp tục chạy theo nó?". Nếu bạn đang cố gắng thao tác các tệp trong các thư mục hệ thống (Windows, Tệp chương trình, trang IIS), bạn đã làm sai điều gì đó. Các trang web IIS có thể tồn tại bên ngoài C: \ inetpub. Cơ sở dữ liệu người dùng SQL Server có thể tồn tại bên ngoài Tệp chương trình. Lần duy nhất bạn nên thường xuyên thấy lời nhắc UAC là cài đặt và cập nhật ứng dụng. Nếu bạn thấy nó thường xuyên hơn, bạn có khả năng làm việc với hệ thống hơn là với nó.


2
Visual Studio sẽ không cho phép bạn mở một dự án ứng dụng web được lưu trữ IIS trừ khi nó đang chạy.
Heinzi

Để mở rộng quan điểm của @ Heinzi, nếu tôi chạy hai phiên bản của cùng một ứng dụng (ví dụ: hai nhánh SVN được lưu trữ ở một vị trí khác nhau), bạn cần VS studio để có thể đặt IIS vào đúng thư mục mà bạn đang làm việc (tức là giải pháp cuối cùng bạn đã mở của hai cái này). Nếu không có đặc quyền nâng cao, bạn không chỉ phải cập nhật IIS theo cách thủ công mà còn có nguy cơ quên và thử nghiệm phiên bản ứng dụng hoàn toàn khác (trong trình duyệt) so với khi bạn đang phát triển (trong VS)
Flater

1

IMHO, nó nắm rõ những gì bạn đang làm.

Trong công việc hiện tại của tôi, tôi phát triển các ứng dụng web và dịch vụ windows. Do đó, tôi thấy bản thân mình làm việc hiệu quả hơn. Nếu tôi đang làm việc trên các ứng dụng mà người dùng sẽ cài đặt, tôi sẽ để nó trên đó để tôi có thể gần nhất có thể với những gì người dùng sẽ trải nghiệm.


Làm thế nào để rời khỏi UAC giúp đỡ? Phát triển ứng dụng web không nên yêu cầu quyền quản trị, ngoại trừ thiết lập IIS ban đầu. Các dịch vụ Windows sẽ yêu cầu quyền quản trị để bắt đầu và dừng, nhưng thông qua một cửa sổ lệnh duy nhất và net start/stopbạn có một dấu nhắc UAC duy nhất. Nếu không, bạn nên xây dựng logic để bạn có một trình chạy dòng lệnh và một trình chạy Win Service.
Đặc vụ_9191

Nó không giúp phát triển, nhưng nó sẽ loại bỏ sự khó chịu của UAC. Nếu bạn không cần nó để mô phỏng truy cập thấp, hãy tắt nó đi; nếu không hãy để nó vào

2
Tôi gỡ lỗi một ứng dụng web được lưu trữ trong IIS yêu cầu các đặc quyền nâng cao.
FinnNk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.