2008-12-16 88 views
0

我有一個專門用於遠程桌面連接的簡短程序,該程序僅設置爲運行該程序,不允許任何其他訪問進入遠程計算機。之前,程序剛剛退出並讓連接終止,但速度非常慢,所以我編寫了下面的代碼來在程序運行完時終止遠程會話。對在遠程桌面上運行的程序使用調試模式

[DllImport("wtsapi32.dll", SetLastError = true)] 
    static extern bool WTSLogoffSession(IntPtr hServer, int SessionId, bool bWait); 

    private IntPtr WTS_CURRENT_SERVER_HANDLE; 
    private const int WTS_CURRENT_SESSION = -1; 

    ... 

    private void HardTerminalExit() 
    { 
     WTSLogoffSession(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, false); 
    } 

此程序在其生產環境中正常工作,由遠程處理使用特定RDP連接文件的人員使用。程序運行後,連接退出。但是,在測試和調試此程序時,我的計算機在每次運行後都會重新啓動。

我正在尋找一種很好的方法來區分這些情況。我應該設置一種遠程調試腳本,並遠程運行程序?還是有一些方法來以編程方式檢測程序是否在調試模式下運行,並在這種情況下禁用退出程序?

回答

2

您可以使用編譯指令:

private void HardTerminalExit() 
{ 
    #if DEBUG 
    // Soft Exit 
    #else 
    // Hard Exit 
    #end if 
} 

我相信這是最好的做法是使用較新的ConditionalAttribute,但我不認爲你可以否定這一點,所以你需要設置環境變量對「釋放」自己:

[Conditional ("RELEASE")] 
private void HardTerminalExit() 
{ 
    // Hard Exit, only called when "RELEASE" is defined. 
} 

這將告訴編譯器只調用時,「釋放」環境變量的地方宣佈這個方法 - 這可以在編譯時宣佈(在構建資產面板條件編譯符號)或者作爲操作的一部分ng系統外殼,請參閱ConditionalAttribute瞭解更多信息。

+0

謝謝,我會嘗試第二種選擇 – 2008-12-16 15:15:55