第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

啟動時如何為Windows服務(wù)獲得臨時管理員權(quán)限窗口

啟動時如何為Windows服務(wù)獲得臨時管理員權(quán)限窗口

C#
桃花長相依 2022-11-21 16:01:11
這個問題已經(jīng)關(guān)閉 [ Dropping process rights under windows ] 但它已經(jīng)很老了,而且解決方案并不完全匹配。我希望找到一個現(xiàn)代的答案,一個可以直接與 C# 和 .Net Framework 的 BCL 一起工作的答案。我有作為 Windows 服務(wù)運行的軟件,它在啟動時需要管理員權(quán)限,但在服務(wù)的剩余生命周期內(nèi)不需要這些權(quán)限。在不斷追求良好安全性的過程中,我只是覺得這是操作系統(tǒng)應(yīng)該提供給用戶級軟件的一個特性。應(yīng)支持降級安全性,以便軟件可以以最低權(quán)限運行并減少安全問題的可能性。當然,作為控制臺應(yīng)用程序,可以在沒有管理員權(quán)限的情況下生成第二個進程,但對于服務(wù),我可能需要有兩個服務(wù)。我希望在一個單一的操作過程中有一種方法,如果不是現(xiàn)在,也許在未來
查看完整描述

2 回答

?
aluckdog

TA貢獻1847條經(jīng)驗 獲得超7個贊

雖然在當今的 Windows 中不可能在單個進程中完成,但兩種服務(wù)方法可能是完成所需任務(wù)的最佳備用選項。

選項

  1. 降級單個 Windows 進程 - 今天不可能

  2. AppDomain 沙盒——并不完美,因為您仍然有一個以提升的權(quán)限運行的主應(yīng)用程序域。提升的權(quán)利不會消失。

  3. 兩項服務(wù)- 迄今為止最好的選擇

  4. 其他沙箱——除了 AppDomain 沙箱之外,可能存在其他沙箱解決方案,但它們可能都具有相同的優(yōu)缺點——它們?nèi)匀挥幸粋€主域在具有提升權(quán)限的單個進程中運行。


兩項服務(wù)

以下是它作為兩種服務(wù)的解決方法的工作方式。

兩個服務(wù)的設(shè)置:

  • 服務(wù) 1 - 啟動模式。在 Windows 啟動時運行。擁有系統(tǒng)權(quán)限。做它需要做的事情,然后開始Service 2,然后自行停止。

  • 服務(wù) 2 - 持續(xù)模式。由 啟動Service 1,并且具有非常有限的權(quán)限(可能是網(wǎng)絡(luò)服務(wù))。

這兩種服務(wù)都可以使用 MSI 安裝一次。

背景

有兩種方法可以使整個解決方案具有兩種操作模式 - 啟動和持續(xù):

  1. 一個程序可以使用不同的命令行參數(shù)以兩種模式運行;或者

  2. 可能有兩個獨立的 EXE 程序。

此外,startup程序可能需要向ongoing其中發(fā)送狀態(tài)信息,有多種方法可以做到這一點(可以通過內(nèi)存 IPC 通道、本地主機 TCP 等)。https://capnproto.org/是一個很好的 IPC 通道通信選項。


應(yīng)用程序域

您可以使用 AppDomains 創(chuàng)建信任度較低的沙箱。

AppDomains 是 .Net Framework 的基本組成部分。您可以將 .Net 程序的另一個副本加載到第二個 AppDomain 中。AppDomains 實際上提供了更多的安全控制。例如,您可以限制和啟用網(wǎng)絡(luò)連接。

唯一的缺點是該過程總體上仍將受管理員信任。因此,理想情況下,您將擁有兩個完全獨立的 .exe 程序。一個是具有執(zhí)行受信任工作的代碼的一個,另一個具有內(nèi)置在清單中并由供應(yīng)商簽名的低信任設(shè)置。如果擁有一個可以由低信任用戶運行的低信任程序,您將獲得額外的好處。

注意:在 DotNetCore 中沒有 AppDomain——它們有不同的方法可以加載和卸載“程序集”,但您需要注意不要引用引用程序集中的任何對象。


查看完整回答
反對 回復(fù) 2022-11-21
?
慕絲7291255

TA貢獻1859條經(jīng)驗 獲得超6個贊

對于配置文件,您可以讓安裝程序創(chuàng)建一個 config 子目錄并打開其權(quán)限,以便該服務(wù)對其具有寫入權(quán)限。對于更新部分,最好不要讓 MSI 安裝一堆文件,然后讓應(yīng)用程序在帶外自行更新。從安裝程序的角度來看,這是違反關(guān)注點分離的行為。如果你必須這樣做,我建議在它自己的文件夾中安裝更新的位(也由安裝程序授予權(quán)限)并使用運行時 IoC/DI 的某個時間來使用這些文件而不是安裝程序安裝的文件。

還有一些方法可以創(chuàng)建 MSI,這樣它就可以在不需要管理員權(quán)限的情況下進行升級。

否則兩種服務(wù)也是可能的。一個管理升級/配置故事,另一個進行業(yè)務(wù)處理。一些第三方框架可以應(yīng)對這種情況。我知道如何編寫這些,但出于安全/責任方面的考慮,我選擇不在我的咨詢中使用它們。

最近,一家中國公司因一項驅(qū)動程序/服務(wù)(我記得)而上了新聞,該驅(qū)動程序/服務(wù)可能會被利用來接管機器。我永遠不想成為促進這種情況發(fā)生的人。


查看完整回答
反對 回復(fù) 2022-11-21
  • 2 回答
  • 0 關(guān)注
  • 294 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號