1. 程式人生 > >c#寫服務、exe 可執行程式、windows鎖屏的過程中遇到的問題

c#寫服務、exe 可執行程式、windows鎖屏的過程中遇到的問題

開啟服務 在服務管理器中,開啟你的服務時出現本地計算機上的XXX服務啟動後停止,某些服務在未由其它服務或程式使用時將自動停止錯誤時,右鍵我的電腦-》管理-》系統工具-》時間檢視器->windows日誌-》應用程式 可以看到你的服務啟動失敗的原因。(使用WindowsService服務出現的錯誤,以及最終的結局方案); ②使用lockworkstation方法進行鎖屏。 定義:        [DllImport("User32.Dll", EntryPoint = "LockWorkStation")]
 private static extern bool LockWorkStation();
使用  LockWorkStation(); 但是發現實現不了鎖屏,網上查了以下 原來該方法需要在互動式左面上進行被呼叫呼叫。 ③:建立.exe可執行檔案來實現鎖屏功能。 首先需要用vs建立建立windows窗體應用程式,具體怎麼建立,可另尋部落格。 怎麼建立.exe程式可檢視http://blog.csdn.net/paullink520/article/details/14170021部落格。 用lockworkstation()可實現鎖屏的功能。 二:新需求,在原有的基礎上再建立一個服務,來監聽該exe程式是否執行,如果沒有執行,讓其執行。 我在服務中用Process.star()方法讓exe程式啟動,但是介面沒有出現鎖屏的效果,不過工作管理員中已經有exe程式的的程序。 在網上找了一番。原理win7為了服務安全的考慮,不讓服務有這個功能,但是給服務引用Cjwdev.WindowsApi.dll檔案
拷貝如下程式碼就可以開啟外部exe程式,實現該有的功能,也可以實現鎖屏的功能。
try   
           {  
  
               string appStartPath = filePath;  //exe程式的絕對地址
               IntPtr userTokenHandle = IntPtr.Zero;   
               ApiDefinitions.WTSQueryUserToken(ApiDefinitions.WTSGetActiveConsoleSessionId(), ref userTokenHandle);  
  
               ApiDefinitions.PROCESS_INFORMATION procInfo = new ApiDefinitions.PROCESS_INFORMATION();   
               ApiDefinitions.STARTUPINFO startInfo = new ApiDefinitions.STARTUPINFO();   
               startInfo.cb = (uint)Marshal.SizeOf(startInfo);  
  
               ApiDefinitions.CreateProcessAsUser(   
                   userTokenHandle,   
                   appStartPath,   
                   "",   
                   IntPtr.Zero,   
                   IntPtr.Zero,   
                   false,   
                   0,   
                   IntPtr.Zero,   
                   null,   
                   ref startInfo,   
                   out procInfo);  
  
               if (userTokenHandle != IntPtr.Zero)  
                   ApiDefinitions.CloseHandle(userTokenHandle);  
  
               int _currentAquariusProcessId = (int)procInfo.dwProcessId;   
           }   
           catch (Exception ex)   
           {   
           }  


相關推薦

c#服務exe 執行程式windows過程遇到的問題

開啟服務 在服務管理器中,開啟你的服務時出現本地計算機上的XXX服務啟動後停止,某些服務在未由其它服務或程式使用時將自動停止錯誤時,右鍵我的電腦-》管理-》系統工具-》時間檢視器->windows日誌-》應用程式 可以看到你的服務啟動失敗的原因。(使用WindowsService服務出現的錯誤,

將java swing的用程式打包exe執行程式

將java swing寫的用程式打包exe可執行程式 原文地址:https://www.cnblogs.com/ssh2/p/3463199.html 下面的文章是介紹如何將自己編寫的swing應用程式打包為.exe的可執行程式,進而編譯為.exe的安裝程式。相信有這樣經歷的朋友肯定可以理解

Xcode編譯c/c++檔案後生成的執行程式位置

當我們用xcode編譯c/c++程式時,可以在xcode裡面直接編譯執行,但是我們想在命令列中執行可執行程式,就像在linux下怎麼辦。我們就需要去找到生成的可執行檔案。 生成的可執行程式位置在 xcode---preferences---locations 在De

QT5的程式打包釋出(打包成exe執行程式

  QT打包的兩種方式: 一個是QT5自帶的windeployqt(不需要下載安裝),它可以找到程式(exe)用到的所有庫檔案,並且都拷貝到exe程式的當前檔案。此時打包的exe較小,需要和拷貝進來的檔案放一起執行,也可以將這些檔案再次打包成一個大的exe檔案,此時用的第二種

使用pyinstaller將py檔案打包成exe執行程式

注:博主使用的 python3.5.3版本。 1. 下載安裝 pyinstaller包。 在終端中,cd到 python目錄下的 Scripts目錄內。 使用pip命令下載安裝 pyinstaller。 等待安裝完成。 2. 用 pyinstaller打包py檔

Python程式碼轉換為exe執行程式

一,簡介 Python寫完程式,要靠命令來執行太LOW,太低調了,還不華麗了。 再說別人的電腦,都沒有Python庫,怎麼執行,還能不能愉快的一起玩耍了。 所以哪怕只會寫一個HelloWorld,也要弄成exe程式,方便偉大的程式碼傳播事業。 其實很簡單,有一個現成的p

Spring系列學習之Spring Cloud Task App Starters 微服務任務程序執行程式

英文原文:http://cloud.spring.io/spring-cloud-task-app-starters/ 目錄 Spring Cloud Task App Starters 特性 可用應用 快速開始 任務應用程式啟動器和Spring雲資料流(**) HTTP

【Python初學】GUI猜數遊戲+打包(生成.exe執行程式

Python初學——GUI猜數遊戲 對於像我一樣的Python初學者,做練習總是像學C一樣從命令視窗輸出我們的程式,但是這樣子很無聊,不會變著花樣來。所以我在做Python練習時候,練習了一些有遊戲題目,但都是命令視窗式的遊戲,所以我就想把這種遊戲圖形化出來,

怎樣判斷一個exe執行程式(dll檔案)是32位的還是64位的?

簡便方法: 直接用記事本或者notepad++開啟exe檔案(dll檔案),會有很多亂碼,不要頭疼,接下來只需要在第二段中找到PE兩個字母,在其後的不遠出會出現d? 或者L。若是d,則證明該程式是64位;若是L,則證明是32位。

使用 pyinstaller 把python指令碼打包成 windows exe 執行程式

首先,需要明確的一點是,必須在 windows 安裝 python,並且用 windows 下的 python 來執行打包的操作,才可以得到 exe 可執行程式(可以先在 linux 下完成除錯)。 因為無論是 py2exe 還是 pyinstaller,都是

python轉exe執行程式在其他系統上執行時出現的錯誤

說明:python轉exe在win10上執行,無法執行在win7系統上 一.win7旗艦版x64 執行錯誤提示 解決辦法 下載api-ms-win-crt-runtime-

用py2exe將python檔案轉換成exe執行程式

然後用pip install 命令安裝py2exe模組,如果你用的python是2.X,那還需要先安裝pip,這裡就不贅述了。 安裝完成後可在python的IDLE中import py2exe,如果不報錯則說明你安裝成功了: 2、然後將下面程式碼儲存為py_to_exe.py檔案:

Java Swing 專案編譯exe執行程式(一)

初始工作:新建資料夾,把jdk拷貝進去(使用者機不一定安裝java環境,所以我們要把jdk一塊打包) 一、選擇專案右鍵匯出 二、選擇java - JAR file - next 三、選擇匯出路徑 四、下一步 五、選擇Swing程式,入口frame 六、點選Fin

QT5.6+opencv2.49+vs2015生成的exe執行程式打包方法

由於研究生工作關係,用到了qt寫介面,程式寫好了,但是當exe檔案拷貝出來到其他電腦上時總是提醒缺少各種dll檔案,搞了半天,終於還是把exe檔案打包好了,測試可以在室友們的電腦上正常執行。下面把相關

Python程式碼轉換為exe執行程式詳解

1:安裝pyinstaller pip install pyinstaller 2,製作exe 1,先寫一個hello.py print('hello world!') input() 2.執行(在script資料夾下) pyinstaller  -F ../project/hell

(Python學習筆記)Python程式碼轉換為.exe執行程式過程及注意事項

作者Python版本為3.6 一.  pyInstaller安裝配置 1,開啟網址:pyInstalller下載網址; 如圖: 2,下載並解壓後目錄如下:(該檔案版本為3.2.1版本,因後步驟需要加入-bac以示區別); 3,還需要下載一個pywin32,pywi

Linux下的C/C++開發基礎(編寫makefile編譯C/C++連結執行程式

本文重點介紹C/C++原始碼工程的編譯連結,編譯器gcc/g++的安裝配置略過... 1. 安裝配置gcc g++ 2. 建立檔案 test.h /test.c / file.h  / file.cpp  3. 編譯.o庫: gcc -c / g++ -c     連結生成靜

教你如何獲得執行程式執行目錄執行程式名執行程式字尾(C\C++)

很多童鞋可能遇見過這個問題。下面給大家講講哈,希望各位有用。 首先,我們應該明白main函式的引數是什麼意思。 int main(int argc, char **argv); 第一個引數說的是,argv中有多少個字串。第二個引數存放的是一些字串,這些字串是系統給出的。其

EXE PE】初識pe結構--手執行程式

【文章標題】: 手寫可執行程式 【文章作者】: dncwbc 【作者郵箱】: [email protected] 【作者QQ號】: 182445917 【軟體名稱】: Hello World! 【軟體大小】: 2.5K 【下載地址】: 自己搜尋下載 【編寫語言】

VS2010靜態編譯生成.exe執行檔案,使c++程式脫離VS環境執行

VS2010靜態編譯生成的.exe可執行檔案,可以免安裝在其他電腦直接執行 靜態編譯:就是在編譯可執行檔案的時候,將可執行檔案需要呼叫的對應動態連結庫(.so)中的部分提取出來,連結到可執行檔案