Làm cách nào để buộc ứng dụng .NET của tôi chạy với tư cách quản trị viên?

899
Gold 2010-05-13 01:09.

Sau khi chương trình của tôi được cài đặt trên máy khách, làm cách nào để buộc chương trình của tôi chạy với tư cách quản trị viên trên Windows 7?

11 answers

1171
Hans Passant 2010-05-13 02:35.

Bạn sẽ muốn sửa đổi tệp kê khai được nhúng vào chương trình. Điều này hoạt động trên Visual Studio 2008 trở lên: Dự án + Thêm Mục mới, chọn "Tệp kê khai ứng dụng". Thay đổi <requestedExecutionLevel>phần tử thành:

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

Người dùng nhận được lời nhắc UAC khi họ khởi động chương trình. Sử dụng một cách khôn ngoan; sự kiên nhẫn của họ có thể hao mòn nhanh chóng.

156
Anders 2010-05-13 15:14.

Thêm một requestedExecutionLevelyếu tố vào tệp kê khai của bạn chỉ là một nửa trận chiến; bạn phải nhớ rằng UAC có thể bị tắt. Nếu đúng như vậy, bạn phải thực hiện kiểm tra theo cách cũ và đưa ra hộp thoại báo lỗi nếu người dùng không phải là quản trị viên
(gọi IsInRole(WindowsBuiltInRole.Administrator)trên chuỗi của bạn CurrentPrincipal).

98
Hassan Rahman 2017-05-13 05:30.

Các bước chi tiết như sau.

  1. Thêm tệp kê khai ứng dụng vào giải pháp
  2. Thay đổi cài đặt ứng dụng thành "app.manifest"
  3. Cập nhật thẻ của "requestExecutionLevel" thành requestAdministrator.

Lưu ý rằng khi sử dụng mã này, bạn cần tắt cài đặt bảo mật của ClickOnce, để thực hiện việc này, hãy vào bên trong Thuộc tính -> Bảo mật -> Bảo mật ClickOnce

62
NG. 2013-08-30 19:43.

Tôi đã triển khai một số mã để thực hiện theo cách thủ công:

using System.Security.Principal;
public bool IsUserAdministrator()
{
    bool isAdmin;
    try
    {
        WindowsIdentity user = WindowsIdentity.GetCurrent();
        WindowsPrincipal principal = new WindowsPrincipal(user);
        isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
    catch (UnauthorizedAccessException ex)
    {
        isAdmin = false;
    }
    catch (Exception ex)
    {
        isAdmin = false;
    }
    return isAdmin;
}
43
David 2010-05-13 01:29.

Bạn có thể nhúng tệp kê khai vào tệp EXE, điều này sẽ khiến Windows (7 trở lên) luôn chạy chương trình với tư cách quản trị viên.

Bạn có thể tìm thêm chi tiết trong Bước 6: Tạo và Nhúng một Tệp kê khai Ứng dụng (UAC) (MSDN).

19
Rashad Maqsood 2013-03-06 21:18.

Trong khi làm việc trên Visual Studio 2008, hãy nhấp chuột phải vào Project -> Add New Itemvà sau đó chọn Application Manifest File.

Trong tệp kê khai, bạn sẽ tìm thấy thẻ requestedExecutionLevelvà bạn có thể đặt cấp thành ba giá trị:

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

HOẶC LÀ

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

HOẶC LÀ

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

Để đặt ứng dụng của bạn chạy với tư cách quản trị viên, bạn phải chọn ứng dụng ở giữa.

13
Justin Mcconnell 2013-03-18 03:06.

Theo

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

bạn sẽ muốn thêm tệp kê khai ứng dụng nếu bạn chưa có hoặc không biết cách thêm tệp kê khai. Vì một số dự án không tự động thêm tệp kê khai riêng biệt, trước tiên hãy chuyển đến thuộc tính dự án, điều hướng đến tab Ứng dụng và kiểm tra để đảm bảo dự án của bạn không loại trừ tệp kê khai ở cuối lần nhấn.

  • Tiếp theo, nhấp chuột phải vào dự án
  • Thêm mục mới
  • Cuối cùng, tìm và nhấp vào Tệp kê khai ứng dụng
13
TheLethalCoder 2017-01-13 05:56.

Một cách khác để làm điều này, chỉ trong mã, là phát hiện xem quá trình có đang chạy với tư cách quản trị viên như trong câu trả lời của @NG hay không. . Và sau đó mở lại ứng dụng và đóng ứng dụng hiện tại.

Tôi sử dụng mã này khi một ứng dụng chỉ cần đặc quyền của quản trị viên khi chạy trong các điều kiện nhất định, chẳng hạn như khi cài đặt chính nó làm dịch vụ. Vì vậy, nó không cần phải chạy với tư cách quản trị viên mọi lúc như các câu trả lời khác buộc nó quá.

Lưu ý trong đoạn mã dưới đây NeedsToRunAsAdminlà một phương pháp phát hiện xem trong điều kiện hiện tại có yêu cầu đặc quyền quản trị viên hay không. Nếu điều này trả về falsemã sẽ không tự nâng cấp. Đây là một lợi thế lớn của phương pháp này so với các phương pháp khác.

Mặc dù mã này có những ưu điểm đã nêu ở trên, nhưng nó cần phải tự khởi chạy lại như một quy trình mới mà không phải lúc nào bạn cũng muốn.

private static void Main(string[] args)
{
    if (NeedsToRunAsAdmin() && !IsRunAsAdmin())
    {
        ProcessStartInfo proc = new ProcessStartInfo();
        proc.UseShellExecute = true;
        proc.WorkingDirectory = Environment.CurrentDirectory;
        proc.FileName = Assembly.GetEntryAssembly().CodeBase;

        foreach (string arg in args)
        {
            proc.Arguments += String.Format("\"{0}\" ", arg);
        }

        proc.Verb = "runas";

        try
        {
            Process.Start(proc);
        }
        catch
        {
            Console.WriteLine("This application requires elevated credentials in order to operate correctly!");
        }
    }
    else
    {
        //Normal program logic...
    }
}

private static bool IsRunAsAdmin()
{
    WindowsIdentity id = WindowsIdentity.GetCurrent();
    WindowsPrincipal principal = new WindowsPrincipal(id);

    return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
12
Evolved 2011-09-08 05:19.

Trong Visual Studio 2010, nhấp chuột phải vào tên dự án của bạn. Nhấn "Xem cài đặt Windows", thao tác này sẽ tạo và mở một tệp có tên "app.manifest". Trong tệp này, hãy thay thế "asInvoker" bằng "requestAdministrator" như được giải thích trong các phần nhận xét trong tệp.

9
Yochai Timmer 2018-02-15 00:19.

Bạn có thể tạo tệp kê khai bằng cách sử dụng Cài đặt bảo mật ClickOnce, sau đó vô hiệu hóa nó:

Right click on the Project -> Properties -> Security -> Enable ClickOnce Security Settings

Sau khi bạn nhấp vào nó, một tệp sẽ được tạo trong thư mục thuộc tính của Dự án có tên là app.manifest sau khi tệp này được tạo, bạn có thể bỏ Enable ClickOnce Security Settingschọn tùy chọn

Mở tệp đó và thay đổi dòng này:

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

đến:

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

Điều này sẽ làm cho chương trình yêu cầu đặc quyền của quản trị viên.

8
Hakan Fıstık 2018-05-05 21:42.

ĐIỀU NÀY KHÔNG ÉP ĐƠN XIN LÀM VIỆC HÀNH CHÍNH.
Đây là phiên bản đơn giản của câu trả lời này , ở trên bởi @NG

public bool IsUserAdministrator()
{
    try
    {
        WindowsIdentity user = WindowsIdentity.GetCurrent();
        WindowsPrincipal principal = new WindowsPrincipal(user);
        return principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
    catch
    {
        return false;
    }
}

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Một thương hiệu kế thừa khác có được cuộc sống mới khi những người chủ mới của Black Opal có được Hội chợ thời trang

Một thương hiệu kế thừa khác có được cuộc sống mới khi những người chủ mới của Black Opal có được Hội chợ thời trang

Desiree Rogers, trái, và Cheryl Mayberry McKissack Chuyển sang, Fenty Beauty và Pat McGrath, có một đế chế làm đẹp mới do phụ nữ làm chủ đang trỗi dậy. Sau thương vụ mua lại mỹ phẩm Black Opal vào tháng 9, đội ngũ quyền lực của Giám đốc điều hành công ty Desiree Rogers và Chủ tịch Cheryl Mayberry McKissack đã thông báo mua lại thương hiệu làm đẹp tiên phong Fashion Fair từ người sáng lập Johnson Publishing Company (JPC).

Ngoài việc trở nên vô nghĩa, các bên bộc lộ giới tính giờ đây đã trở nên chết người

Ngoài việc trở nên vô nghĩa, các bên bộc lộ giới tính giờ đây đã trở nên chết người

Đối với những người có quá nhiều thời gian, tiệc tiết lộ giới tính là một cách thú vị để không cần áp đặt những định kiến ​​hạn chế lên thai nhi trước một đối tượng bạn bè giả vờ quan tâm một cách lịch sự. Tuy nhiên, việc chỉ dựa vào những chiếc bánh nướng có màu nhân tạo để biểu thị một tiếng hoo-ha hoặc một đứa trẻ đi tè đã trở nên xa xỉ trong các bậc cha mẹ trên Instagram.

Kirstjen Nielsen đang cố gắng đổi mới bản thân với tư cách là một người phụ nữ 'nói ra sự thật cho sức mạnh'

Kirstjen Nielsen đang cố gắng đổi mới bản thân với tư cách là một người phụ nữ 'nói ra sự thật cho sức mạnh'

Hôm thứ Tư, cựu Bộ trưởng An ninh Nội địa Kirstjen Nielsen vì một lý do nào đó đã được đưa ra một diễn đàn để phát biểu tại Hội nghị thượng đỉnh Những người phụ nữ quyền lực nhất của Fortune. Và có thể đoán trước được, người phụ nữ giám sát các nỗ lực (đang diễn ra) của chính quyền Trump nhằm chia cắt các gia đình ở biên giới đã sử dụng thời gian của mình như một cơ hội để tự bảo vệ mình và tự nhận mình là người — và hãy hít thở sâu ở đây — “đã nói sự thật với quyền lực.

Toyota Racing Development sẽ cho ra mắt Supra 3000GT Concept, Massive Wing vào tháng tới

Toyota Racing Development sẽ cho ra mắt Supra 3000GT Concept, Massive Wing vào tháng tới

Vì thế hệ mới nhất của chiếc xe điều chỉnh được yêu thích trên thế giới hiện đã có mặt tại đây, nên chỉ có điều kiện là Toyota Racing Development sẽ đưa phiên bản Supra thế hệ thứ năm sửa đổi của riêng mình đến SEMA vào tháng tới. Toyota đã cho chúng tôi một gợi ý về những gì sẽ xảy ra trong tuần này: một chiếc Concept GR Supra 3000GT hiện đại.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Vụ kiện, nêu tên một số học khu, lập luận rằng dự luật "Không nói đồng tính" được ban hành gần đây của Florida "có hiệu quả im lặng và xóa bỏ học sinh và gia đình LGBTQ +"

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Tôi ghét từ "tàu đắm". Mọi người cảm thấy thoải mái trong la bàn đạo đức của riêng mình, và khi làm như vậy, họ thấy mình vượt qua sự phán xét.

Language