2010-06-09 52 views
0

我需要從我的應用程序中禁用並啓用任務管理器。 我正在爲我的Kiosk應用程序執行此操作。我知道我可以通過使用下面的代碼更改註冊表項來執行此操作 。但問題 是我的自助服務終端應用程序將運行在有限的用戶帳戶中, 不允許應用程序更改註冊表級別的密鑰。使用限制用戶帳戶中的c#禁用任務管理器

代碼工作完全管理員帳戶:

RegistryKey regkey; 
     string keyValueInt = "1"; 
     string subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"; 
     regkey = Registry.CurrentUser.CreateSubKey(subKey); 
     regkey.SetValue("DisableTaskMgr", keyValueInt); 
     regkey.Close(); 

我怎樣才能在有限的用戶帳戶實現這一目標?

+3

請不要轉貼的問題。如果您有更多要添加的內容,請編輯您現有的問題。 [在OS硬化機器上禁用任務管理器使用c#](http://stackoverflow.com/questions/2986782/disabling-task-manager-using-c-in-os- hardened-machine) – 2010-06-09 02:42:49

+0

我覺得這個問題是完全不同的從我以前的帖子。我同意這是關於任務管理器。但是這個問題的原因是不同的。它關於用戶帳戶而不是OS強化。 – Anuya 2010-06-09 03:01:30

回答

0

在將應用程序部署到目標機器的過程中,您可能在某個時間點具有管理訪問權限,是嗎?如果是這樣,請知道註冊表項是Win32安全對象。

以管理員身份登錄,右鍵單擊某個註冊表項,選擇「權限」,並給出讀/寫等。訪問您的應用程序將運行的用戶帳戶的權限。單擊高級按鈕並確保爲所有子項賦予相同的權限,因爲您正在使用應用程序創建密鑰。

要自動化應用程序的部署,可以使用Win32安全API上的.NET框架的包裝從管理員用戶帳戶以編程方式完成這些步驟。

顯然,此解決方案會產生安全漏洞。您所授予的用戶帳戶訪問權限,據我所知,可能會被利用來獲得root訪問權限。如果沒有深入調查任務管理器的副作用,則無法確定洞的範圍。既然你在談論一個自助服務終端應用,看起來這對你來說可能不是問題,但我只是想確保你知道你的行爲的後果。

如果你想要一個真正安全的應用程序,你需要創建一個在管理帳戶中運行的服務,並讓它實現一個只提供你真正需要的任務管理器功能的API,而不是暴露整個並通過管道或共享內存或其他一些進程間通信機制公開API。

0

對於自助終端應用程序,我通常會創建限制性組策略,在啓動時應用。使用group policy editor,您可以禁止用戶訪問開始欄,任務管理器,ctrl alt delete,Alt-Tab,Alt-F4等。如果您無法獲得此類操作系統的訪問權限,則您的信息亭應用程序爲會有問題。

1

打開記事本,複製和粘貼下面的代碼,保存爲Disable.reg和運行(雙擊該文件):

Windows Registry Editor Version 5.00 
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] 
"DisableTaskMgr"=dword:1 
+0

將此導入到註冊表中需要具有管理權限,原始問題明確指出的管理權限將不可用。 – Nick 2016-03-10 18:02:41