簡體   English   中英

阻止在C#中啟動應用程序

[英]Prevent application launch in C#

好吧,我已經花了一個下午的時間進行研究,但是並沒有很幸運地找到答案。 我試圖阻止某個類型的dll或后台應用程序啟動應用程序。 它用於監視我機構的應用程序使用情況和許可證。 我在這里找到有關WqlEventQuery以及FileSystemWatcher的線索。 這些解決方案似乎都不適合我,因為:

使用WqlEventQuery,我只能在過程創建后處理事件。 使用記事本作為測試,在我的邏輯將其關閉之前,記事本是可見的並可以訪問。 我試圖掛起/恢復線程(我知道這是不安全的,但我正在測試/播放),但這只是掛了窗口,直到邏輯完成。

使用FileSystemWatcher,我無法通過啟動.exe來獲取任何事件,只能創建,重命名和刪除文件。

此處的目標是完全不要啟動應用程序,除非我的邏輯允許它啟動。 這可能嗎? 我想到的下一個最佳解決方案是強制使用某種模式對話框,該對話框不允許用戶與任何內容交互,一旦關閉該對話框,應用程序將被終止。 我的關注點是很好地殺死應用程序,並在加載諸如Photoshop之類的東西時以高開銷處理應用程序。 這也會干擾我希望用戶可以進入隊列的功能,直到獲得許可證為止。 這是我最好的路線嗎? 還有其他建議嗎?

謝謝

編輯:澄清這不是病毒或任何惡意軟件。 這與阻止訪問黑名單或允許通過白名單無關。 這個想法是針對特定的應用程序逐案檢查數據庫,並查看是否有可用的許可證。 如果有,請啟動應用程序;如果沒有,請顯示對話框,讓用戶知道。 如果我們有足夠的許可證來滿足需求等,我們還將用它來監視和跟蹤。這些應用之一就是SPSS,它具有非常昂貴的許可證,但使用許可證的人數卻非常有限。

你能用嗎

System.Diagnostics.Process.GetProcessesByName

在一個循環中尋找過程?

如果您不使用過於激進的輪詢速率,則可能會起作用。

您的位置確實接近,請看一下WMI管理事件。 http://msdn.microsoft.com/zh-CN/library/ms186151%28VS.80%29.aspx

Microsoft的示例代碼: http : //msdn.microsoft.com/zh-cn/library/ms257355(VS.80).aspx

訂閱適當的事件將為您的應用程序提供適當的信息,以執行您所描述的內容。

不知道這是否是一個好的解決方案,但是您可以執行一些操作,例如將密鑰傳遞給main以便如果該密鑰不存在或無效,則應用程序將關閉。 然后,當您在代碼中打開應用程序時,只需傳遞密鑰即可。然后,有人必須知道密鑰才能啟動應用程序。

這是假設您可以訪問有問題的應用程序的源代碼,在再次閱讀您的問題時,我不太確定。

我假設您沒有要阻止加載的應用程序的源代碼...

您是否考慮過使用系統策略? 這將是阻止用戶啟動程序的最佳支持方式。

您可能會運行一項服務,該服務會強行殺死未列入“白名單”的任何應用程序,但我不能說這能起到多大作用。

我想知道您是否采用了錯誤的方法。 過去,有一個Mac應用程序阻止訪問桌面,並具有啟動一組應用程序列表的按鈕。

理念

如果您擁有批准的應用程序的包裝器,然后僅允許包裝器在計算機上運行,​​該怎么辦?

我希望有某種方法可以掛起應用程序啟動,但是在此方面不能直接提供幫助。

您可能可以通過檢測應用程序的窗口打開和隱藏(將其移到屏幕外)來改進當前的方法,以使用戶在嘗試關閉應用程序時無法嘗試與之交互。

但是,另一種可能的方法(取決於您的情況)可能是編寫應用程序啟動器。 這只是代替了檢查您的許可條件的應用程序快捷方式的替代,然后執行Process.Start來啟動真正的.exe。 這將對任何應用程序都適用。 (我使用這樣的系統來啟動具有特殊環境設置的應用程序,並且運行良好)

您可以將其與當前方法結合起來,以作為設法避開啟動器的“聰明”用戶的后盾。

如果我的理解是正確的,那么您想創建一個應用程序將阻止計算機用戶啟動除白名單程序以外的任何其他進程。

如果是這種情況,請使用System.Diagnostics.Process監視進程的進程列表(在while循環中)(GetProcesses方法提供所有正在運行的進程的列表)

只要在啟動過程中終止該進程即可。

或者,如果您的計算機具有Windows 7(Windows 2008 ??),則可以使用AppLocker。 http://www.microsoft.com/windows/enterprise/products/windows-7/features.aspx#applocker只是讓Windows阻止啟動。

您可能要看一下以下產品: http : //www.sassafras.com/licensing.html我個人不能忍受它,但這是因為它確實可以滿足您的描述。 可能會節省一些編碼。

您實際上可以編輯注冊表,以便在單擊psd時調用啟動器而不是photoshop。 然后,啟動器將檢查許可證,如果有許可證,則使用文件路徑啟動photoshop。

這是一個長鏡頭,但您可能會發現有幫助。

感知類型和應用程序注冊http://msdn.microsoft.com/zh-cn/library/cc144150(VS.85).aspx

暫無
暫無

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

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