程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#允許服務與桌面交互

c#允許服務與桌面交互

編輯:C#入門知識

我們寫一個服務,有時候要讓服務啟動某個應用程序,就要修改服務的屬性,勾選允許服務與桌面交互,
可以用修改注冊表實現,我們必須在安裝後操作,所以請重寫Installer的OnAfterInstall。
protected override void OnAfterInstall(System.Collections.IDictionary savedState) {
RegistryKey rk = Registry.LocalMachine;
string key = @"SYSTEM\CurrentControlSet\Services\" + this.sInstaller.ServiceName;
RegistryKey sub = rk.OpenSubKey(key, true);
int value = (int)sub.GetValue("Type");
if (value < 256) {
sub.SetValue("Type", value | 256);
}
base.OnAfterInstall(savedState);
}
但以上方法只能在重啟後起到作用。。。若要想立即生效可以用以下代碼代之,將此方法放入onAfterInstall即可
設置服務與桌面交互
private void SetServiceDesktopInsteract(string serviceName) {
ManagementObject wmiService = new ManagementObject(string.Format("Win32_Service.Name='{0}'",serviceName));
ManagementBaseObject changeMethod = wmiService.GetMethodParameters("Change");
changeMethod["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", changeMethod, null);
}
若想立即啟動服務調System.ServiceProcess.ServiceController類來實現
onstart的時候修改注冊表
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\你的服務名] 
 
"Type"=dword:00000010  
 
key value+256 
比如現在00000010是16+256=272
16精制就是00000110
C#允許服務與桌面交互的實現操作:直接操作“管理工具”下的“服務”也行:

操作“管理工具”

C#允許服務與桌面交互的具體實現步驟就向你介紹到這裡,希望對你學習和理解C#允許服務與桌面交互有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved