Windows

以提升的權限在任何使用者登錄/登錄時執行應用程序

  • October 22, 2018

我正在嘗試使應用程序在具有提升權限但沒有 UAC 提示的任何使用者登錄(或會話連接,無論是本地還是遠端)上執行。添加新使用者後,應用程序也應在其登錄時執行,無需額外設置。

出於測試目的,我已經使用 Windows 10 Enterprise v.1709 設置了 Hyper-V 機器。在它上面我有一個主(稱為“管理員”)帳戶,它位於管理員組中,一個(稱為“使用者”)帳戶僅在使用者組中。

我創建了簡單的 WPF 應用程序,它顯示目前使用者以及它是否具有管理員權限。最終應用程序也將是 WPF。

我將使用 WiX 為我的應用程序套件創建安裝程序(上述應用程序、Windows 服務,也許還有更多)。標題中的行為必須在安裝期間自動設置。在安裝時,我可以做任何我想做的事,僅受 WiX 功能的限制,但它允許我在安裝過程中執行自定義應用程序 (C#),所以我認為沒有任何限制。安裝將從具有管理員權限的帳戶執行。

以下是我嘗試過的以及結果如何:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 中的應用程序

  • “以管理員身份執行此程序”未選中

管理員:啟動,沒有管理員權限

使用者:開始,沒有管理員權限

  • 為所有使用者選中“以管理員身份執行此程序”

管理員:不啟動

使用者:不啟動

HKLM\Software\Microsoft\Windows\CurrentVersion\Run 中的條目

  • “以管理員身份執行此程序”未選中

管理員:啟動,沒有管理員權限

使用者:開始,沒有管理員權限

  • 為所有使用者選中“以管理員身份執行此程序”

管理員:不啟動

使用者:不啟動

任務計劃程序,觸發“任何使用者登錄時”

  • 沒有其他選擇

管理員:不啟動

使用者:不啟動

  • 選中“以最高權限執行”

管理員:啟動,管理員權限

使用者:不啟動

  • 為所有使用者選中“以管理員身份執行此程序”

管理員:不啟動

使用者:不啟動

  • 為所有使用者選中“以管理員身份執行此程序”,選中“以最高權限執行”

管理員:啟動,管理員權限

使用者:不啟動

如何做呢?當應用程序根本不執行時,事件查看器似乎沒有記錄任何特定資訊。它應該在那裡還是這樣的日誌可能放在其他地方?那麼在哪裡?

目標:Windows 8+、Server 2012+

如果您必須有一個 GUI,那麼處理這個問題的正確方法是擁有一個 GUI 應用程序和一個單獨的系統服務。該服務執行實際工作,GUI 只是將命令傳遞給它。模擬可用於允許服務充當使用者。


如果您需要管理員訪問權限的唯一原因是寫入 HKLM 密鑰,那麼管理員訪問權限是執行此操作的錯誤方法。在您的安裝程序中,創建系統資料庫項並更改該項上的 ACL,以便使用者具有寫入權限。以這種方式執行應用程序不需要管理員權限。

引用自:https://serverfault.com/questions/936173