簡體   English   中英

使方法在c#中以管理員模式運行的最佳方法是什么?

[英]What is the best way to make a method run in administrator mode in c#?

我有一個程序可以很好地處理文件系統,並且需要某些方法以管理員身份運行。 我無法使用需要在窗體上進行拖放的應用程序以管理員身份自行運行。 我想一種方法不能用管理員權限執行。 我真的不想為一種方法制作一個花葯可執行文件。 如果我確實制作了另一個可執行文件,那么通過應用程序傳遞多個參數並重定向輸出的最佳方法是什么? 我希望我用正確的措詞表達自己的意思。

您不能以管理員身份運行單個方法。 但是,您可以在方法開始時模擬具有管理員權限的用戶,以其他用戶的身份執行一些代碼,然后返回到原始用戶。

對於以下問題的可接受答案列出了一些選項: 如何在.NET中進行模擬?


在回答上述鏈接問題時,馬特·約翰遜(Matt Johnson)還展示了一些使它輕松進行的代碼,顯然,他還以DLL的形式將其發布到了GitHub,您可以在其中下載和使用它。

您唯一的選擇是:

  1. 以管理員身份運行整個程序
  2. 當用戶想要執行管理功能時,以管理員身份重新啟動程序
  3. 重新考慮您的設計方法,使您的方法不再需要管理員
  4. 使用某種形式的IPC啟動第二個提升權限的應用程序,並為您處理請求。

對於IPC路由,我知道的最簡單的方法是將WCF與命名管道一起使用,您只需像對待代碼中的任何其他類一樣對待WCF通信,並通過常規功能進行通信即可。

如果我對您的理解正確,則需要程序以提升模式啟動。 這樣做的最簡單方法是在應用程序清單文件中將其指定為要求。

為了將清單添加到您的應用程序,您可以按照以下步驟操作:

  1. 右鍵單擊您的項目
  2. 添加->新項->應用清單文件
  3. 在新的.manifest文件中,將<requestedExecutionLevel level="asInvoker" uiAccess="false" />替換為<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  4. 通過轉到以下位置,確保將應用程序配置為與新清單一起運行:右鍵單擊項目->屬性->應用程序選項卡->清單

您可以在此處閱讀有關應用程序清單的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM