2014-05-19 79 views
1

我在Windows 7 64位上的c#2010中有一個應用程序。 我想通過這個代碼開始SQLBROWSER:無法在計算機上啓動服務SQLBrowser'。'

public void Start() 
{ 
    if (_service.Status != ServiceControllerStatus.Running || 
     _service.Status != ServiceControllerStatus.StartPending) 
     _service.Start(); 

    _service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 1, 0)); 
} 

和我創建一個app.manifest文件來運行我的應用程序作爲管理員。

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

,在這裏當我執行我的應用程序作爲管理員的錯誤:「」

無法啓動計算機服務SQLBrowser

+0

可以手動啓動該服務,從服務安慰? –

+0

另外,你的IF條件可能應該是'&&'而不是'||'(不是這就是爲什麼你的服務沒有啓動) –

+0

是的,我可以,而且我可以啓用它,當它通過代碼desabled,但啓動它,不! –

回答

1

好MSDN文章,我發現我的問題的解決方案,非常感謝你@ user3394380尋求幫助,此處啓用和啓動服務的正確代碼爲:

// Enable the service : 
// Create a .cmd file and write the code below, then launch it via a process 
"SC \\" + System.Environment.MachineName + @" Config SQLBROWSER start= auto" 

// Start the service : 
// Call Start() 
_service.Start(); 

注意:不要啓用,並在相同的動作啓動該服務,因爲我做的,我啓用它的操作外,並在行動中啓動B.

0

我在VS 2010中以管理員身份進行調試。它在編譯的應用程序中工作

有app.manifest:

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 

    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 

    </application> 
    </compatibility> 

</asmv1:assembly> 

和代碼:

class Program 
{ 
    static ServiceController _service = new ServiceController("SQLBROWSER"); 

    static void Main(string[] args) 
    { 
     //Enable service before starting it. 
     Process.Start("sc.exe", " config SQLBROWSER start=auto"); 
     Start(); 
    } 

    static void Start() 
    { 
     if (!(_service.Status == ServiceControllerStatus.Running || _service.Status == ServiceControllerStatus.StartPending)) 
      _service.Start(); 

     _service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 1, 0)); 
    } 
} 

這裏檢查http://technet.microsoft.com/en-us/library/cc739213(v=ws.10).aspx

+0

您沒有看到我上面的評論,我說:我可以啓用該服務時禁用,但不啓動它。 去禁用服務,並通過代碼啓用它,然後啓動它,你將有相同的錯誤 –

+0

對不起,我錯過了禁用的服務部分。 – yW0K5o

+0

更新:'Process.Start(「sc.exe」,「config SQLBROWSER start = auto」);'from [http://technet.microsoft.com/en-us/library/cc739213(v=ws.10)的.aspx] – yW0K5o

相關問題