C windows 服務Session0穿透

2021-09-25 18:32:46 字數 2289 閱讀 5943

做個服務拉起應用程序的需求,發現程序後台起了,但是沒有介面

先看這兩篇:

穿透session 0 隔離(一)

穿透session 0 隔離(二)

說的很清楚,這裡不做解釋

我們這裡用c++**實現

handle getprocesshandle(int id)

bool gettokenbyname(handle &htoken, lpstr lpname)

handle hprocesssnap = null;

bool bret = false;

processentry32 pe32 = ;

handle hprocess = null;

if (hprocesssnap == invalid_handle_value)

pe32.dwsize = sizeof(processentry32);

if (process32first(hprocesssnap, &pe32))

} while (process32next(hprocesssnap, &pe32));

} closehandle(hprocesssnap);

return (bret);

}bool startprocess(lpcstr lpprocname)

handle htoken = null;

if (!gettokenbyname(htoken, "explorer.exe"))

startupinfo ststartup;

process_information stprocinfo;

zeromemory(&ststartup, sizeof(startupinfo));

ststartup.cb = sizeof(startupinfo);

ststartup.lpdesktop = text("winsta0\\default");

ststartup.dwflags |= startf_useshowwindow;

ststartup.wshowwindow = sw_shownormal;

bool bresult = createprocessasuser(htoken, lpprocname, null, null, null,

false, normal_priority_class, null, cursubprocessdir.c_str(), &ststartup, &stprocinfo);

closehandle(htoken);

if (!bresult)

return bresult;

}int killprogram(lpcstr lpprocname)

; if (!lpprocname || !lpprocname[0])

strfile = strrchr((const char*)lpprocname, '\\');

if (0 != strfile)

if (hprocesssnap == (handle)-1)

//用來給stprocentry32空間賦值0

memset(&stprocentry32, 0, sizeof(stprocentry32));

stprocentry32.dwsize = sizeof(processentry32);

if (process32first(hprocesssnap, &stprocentry32))

} while (process32next(hprocesssnap, &stprocentry32));

} closehandle(hprocesssnap);

return 0;

}

呼叫時,只需要

startprocess("f:\\demo.exe");
如果在服務中呼叫messagebox也一樣,故有下面**代替

#include #pragma comment( lib, "wtsapi32.lib" )

bool svcmessagebox(lpstr lpcap, lpstr lpmsg, dword style, dword &result)

示例:

dword resutl;

svcmessagebox("錯誤", "連線斷開,請檢查伺服器服務!", mb_ok | mb_iconinformation, resutl);

win7及以後都有會話(session)問題,這確實有點煩人

C windows服務安裝

第二步 以超級管理的身份開啟cmd命令視窗 程式為framework 4.0,輸入cd c windows microsoft.net framework v4.0.30319 程式為framework 2.0,輸入cd c windows microsoft.net framework v2.0....

C windows服務知識集錦

最近公司專案,本人也是剛接觸windows服務,現在把這兩天上網學習的一些資料拿出來與大家分享。1 關於windows服務安裝包的製作和自動啟動服務 2 關於windows服務如是進行除錯。實際上,我們可以直接在onstart 方法中通過eventlog.writeentry hi,i m wise...

C windows服務 一 建立

新建服務專案 雙擊service1.cs,出現介面,右鍵,選擇 新增安裝程式 專案中會生成 projectinstaller.cs,修改projectinstaller.cs 設定執行該服務應用程式時所使用的帳戶型別,預設account,服務安裝的時候會提示輸入使用者名稱密碼 this.servic...