2009-11-12 160 views
3

我目前正在創建Windows服務應用程序,該應用程序將監視對HKEY_USERS註冊表中某些鍵的更改。我這樣做的方式是收集當前用戶的SID。我遇到的問題是由於當前作爲本地系統運行的服務而返回管理員SID。以用戶身份安裝Windows服務

我需要的系統是收集並返回當前登錄用戶的SID(我不是指本地服務,本地系統或網絡服務,而是通過GINA登錄到Windows的人),所以我需要的服務是以該用戶身份運行。這也將允許服務回寫給用戶網絡驅動器,這是該程序的意圖。

我遇到的問題是,當我嘗試使用installutil.exe安裝用戶服務時,它會要求輸入用戶名和密碼,我已嘗試使用自己的憑據(我有管理員帳戶和非管理員帳戶),但它沒有任何它,再加上我希望用戶根據登錄的人而改變,而不是固定的。有沒有辦法做到這一點?

回答

1

這一切似乎都有點混亂。可以有任何數量的人通過遠程桌面等登錄。如果您作爲服務希望看到他們的註冊表,您絕對不會通過HKCU到達那裏。如果你想要這樣的東西,你應該使用autorun exe而不是服務。任何類似檢查會話和向其中注入東西以訪問會話中加載的註冊表配置單元的方式都是過度的,並且不可能以任何方式清理乾淨。

+0

沒想到的是,用戶的SID的過程 - 刪除我的回答 – ChrisF 2009-11-12 12:42:39

+0

認爲我現在正沿着應用程序路線走,希望通過登錄腳本以啓動時的用戶身份運行 – manemawanna 2009-11-12 14:32:29

+0

只要您不需要以管理員身份運行應用程序 - 可能會使UAC變得麻煩Vista中/ 2K8/2K8R2。祝你好運。 – 2009-11-12 14:51:09

2

當前用戶」的假設是一個桌面Windows概念,並且使用快速用戶切換,即使這不是事實。 Windows服務層在桌面和服務器變體中相當普遍,並不能很好地解決這個問題。它位於交互式會話層下面。其中一種方式就是能夠運行服務,即使沒有用戶登錄。

0

您可以找到以類似explorer.exe的每一個用戶運行,然後獲得在運行過程中(你可以使用WMI像功能here