最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#跨PC遠(yuǎn)程調(diào)用程序并顯示UI界面

 更新時間:2022年05月14日 10:16:46   作者:殘生  
這篇文章主要為大家介紹了使用C#跨PC遠(yuǎn)程調(diào)用程序并顯示UI界面,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

在項目中有一個需求是需要在局域網(wǎng)內(nèi)跨PC遠(yuǎn)程調(diào)用一個程序,并且要求有界面顯示,調(diào)查了一些資料,能實現(xiàn)遠(yuǎn)程調(diào)用的.Net技術(shù)大概有PsExec、WMI、Schedule Task。

這三種方式都做了一個嘗試,結(jié)果發(fā)現(xiàn)PsExec、WMI都只能在進程列表中看到程序執(zhí)行,卻無法顯示界面,無法執(zhí)行程序中的管理員權(quán)限操作,就連簡單的在C盤創(chuàng)建一個txt文本都做不到。

也許是我使用方法不對,無法達(dá)到我的需求。直到后來使用了Schedule Task的方式之后,才成功實現(xiàn)了我的需求。

第三種技術(shù)的主要思路是先通過CMD窗口調(diào)用schtasks命令在遠(yuǎn)程PC上創(chuàng)建一個單次執(zhí)行的計劃任務(wù),在計劃任務(wù)中調(diào)用外部程序,然后立即執(zhí)行,可以顯示界面,并且可以執(zhí)行管理員權(quán)限的操作。

用到的schtasks命令:

string queryTaskArg = string.Format(@" /query /s {0} -u domainname\{1} -p {2} /tn install", ip, username, password);
string creatTaskArg = string.Format(@" /create /s {0} -u domainname\{1} -p {2} /sc ONCE /st 10:00 /tn installSelector /tr {3} /rl HIGHEST /ru Local /IT", ip, username, password, installPath);
string runTaskArg = string.Format(@" /run /s {0} -u domainname\{1} -p {2} /tn install", ip, username, password); ;
string deleteTaskArg = string.Format(@" /delete /s {0} -u domainname\{1} -p {2} /tn install /F", ip, username, password);

schtasks /create 創(chuàng)建計劃任務(wù)

schtasks /query 查詢計劃任務(wù)

schtasks /run z執(zhí)行計劃任務(wù)

schtasks /delete 刪除計劃任務(wù)

ip:遠(yuǎn)程PC的IP地址

username:遠(yuǎn)程PC的登陸用戶名

password:遠(yuǎn)程PC的登陸密碼

/tn 計劃任務(wù)的名字 /tr調(diào)用程序的路徑 /sc設(shè)置執(zhí)行頻率 /rl 設(shè)置運行權(quán)限

需要注意的是使用這個方法遠(yuǎn)程調(diào)用程序會有相對路徑方面的問題,不建議在執(zhí)行程序中使用相對路徑訪問其他文件。

完整代碼:

string creatTaskArg = string.Format(@" /create /s {0} -u domainname\{1} -p {2} /sc ONCE /st 10:00 /tn installSelector /tr {3} /rl HIGHEST /ru Local /IT", ip, username, password, installSelectorPath);
                string runTaskArg = string.Format(@" /run /s {0} -u domainname\{1} -p {2} /tn installSelector", ip, username, password); ;
                string deleteTaskArg = string.Format(@" /delete /s {0} -u domainname\{1} -p {2} /tn installSelector /F", ip, username, password);
                System.Diagnostics.Process p1 = new System.Diagnostics.Process();
                p1.StartInfo.FileName = @"schtasks.exe";
                p1.StartInfo.Arguments = string.Format(@" /query /s {0} -u domainname\{1} -p {2} /tn installSelector", ip, username, password);
                p1.StartInfo.UseShellExecute = false;
                p1.StartInfo.RedirectStandardError = true;
                p1.StartInfo.RedirectStandardOutput = true;
                p1.StartInfo.CreateNoWindow = true;
                p1.Start();
                p1.WaitForExit();
                string err = p1.StandardError.ReadToEnd();
                string sop = p1.StandardOutput.ReadToEnd();
                if (!string.IsNullOrEmpty(err) && string.IsNullOrEmpty(sop))
                {
                    p1.StartInfo.Arguments = creatTaskArg;
                    p1.Start();
                    p1.WaitForExit();
                    err = p1.StandardError.ReadToEnd();
                    sop = p1.StandardOutput.ReadToEnd();
                    if (!sop.ToLower().Contains("success"))
                    {
                        throw new Exception(string.Format("Create schedule task failed on {0}", ip));
                    }
                }
                else
                {
                    _logger.Error(err);
                }
                p1.StartInfo.Arguments = runTaskArg;
                p1.Start();
                p1.WaitForExit();
                err = p1.StandardError.ReadToEnd();
                sop = p1.StandardOutput.ReadToEnd();
                if (!string.IsNullOrEmpty(err) || !sop.ToLower().Contains("success"))
                {
                    throw new Exception(string.Format("Run schedule task failed on {0}", ip));
                }
                p1.StartInfo.Arguments = deleteTaskArg;
                p1.Start();
                p1.WaitForExit();
                err = p1.StandardError.ReadToEnd();
                sop = p1.StandardOutput.ReadToEnd();
                if (!string.IsNullOrEmpty(err) || !sop.ToLower().Contains("success"))
                {
                    throw new Exception(string.Format("Delete schedule task failed on {0}", ip));
                }
                p1.Close();

以上就是C#跨PC遠(yuǎn)程調(diào)用程序并顯示UI界面的詳細(xì)內(nèi)容,更多關(guān)于C#跨PC遠(yuǎn)程調(diào)用顯示UI的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#多線程系列之線程通知

    C#多線程系列之線程通知

    本文詳細(xì)講解了C#多線程中的線程通知,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#操作NPOI實現(xiàn)Excel數(shù)據(jù)導(dǎo)入導(dǎo)出

    C#操作NPOI實現(xiàn)Excel數(shù)據(jù)導(dǎo)入導(dǎo)出

    這篇文章主要為大家詳細(xì)介紹了C#如何操作NPOI實現(xiàn)Excel數(shù)據(jù)導(dǎo)入導(dǎo)出功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-02-02
  • Unity實現(xiàn)卡拉OK歌詞過渡效果

    Unity實現(xiàn)卡拉OK歌詞過渡效果

    這篇文章主要為大家詳細(xì)介紹了Unity實現(xiàn)卡拉OK歌詞過渡效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C#后臺接受前臺JSON字符串裝換成字典集合處理

    C#后臺接受前臺JSON字符串裝換成字典集合處理

    本文介紹C#利用Newtonsoft接收前端的JSON字符串,并解析反序列化成字典集合,對其進行處理。
    2016-04-04
  • .NET中的Timer類型用法詳解

    .NET中的Timer類型用法詳解

    這篇文章主要介紹了.NET中的Timer類型用法,較為詳細(xì)的分析了Timer類型在各種環(huán)境下的用法,需要的朋友可以參考下
    2014-08-08
  • C#裝箱和拆箱原理詳解

    C#裝箱和拆箱原理詳解

    這篇文章通過圖例主要介紹了C#裝箱和拆箱原理,內(nèi)容很簡單,感興趣的小伙伴們可以參考一下
    2015-10-10
  • C# 中的List.Sort()--集合排序方法全面解析

    C# 中的List.Sort()--集合排序方法全面解析

    這篇文章主要介紹了C# 中的List.Sort()--集合排序方法全面解析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#利用QrCode.Net生成二維碼(Qr碼)的方法

    C#利用QrCode.Net生成二維碼(Qr碼)的方法

    QrCode.Net是一個使用C#編寫的用于生成二維碼圖片的類庫,使用它可以非常方便的為WinForm、WebForm、WPF、Silverlight和Windows Phone 7應(yīng)用程序提供二維碼編碼輸出功能??梢詫⒍S碼文件導(dǎo)出為eps格式
    2016-12-12
  • unity實現(xiàn)攝像頭跟隨

    unity實現(xiàn)攝像頭跟隨

    把這個腳本賦給你的攝像機,再把游戲角色賦給character變量,之后就能實現(xiàn)攝像機平滑的跟隨player在地球的任一角落了。有需要的小伙伴可以參考下。
    2015-03-03
  • C#窗體全屏功能實例代碼

    C#窗體全屏功能實例代碼

    簡要介紹窗體全屏的方法,列出實現(xiàn)窗體的全屏功能以及全屏功能的快捷鍵的代碼,需要的朋友可以參考下
    2016-11-11

最新評論

嵊州市| 聂拉木县| 长子县| 桑植县| 周宁县| 元谋县| 麦盖提县| 时尚| 两当县| 夏津县| 泰来县| 土默特左旗| 福鼎市| 长沙县| 且末县| 谷城县| 民和| 屯门区| 济源市| 平利县| 镇沅| 泰来县| 平湖市| 恩施市| 营口市| 河东区| 平塘县| 冕宁县| 中山市| 邯郸县| 东港市| 台中县| 昌吉市| 高平市| 汉川市| 美姑县| 诏安县| 虹口区| 太保市| 曲周县| 通榆县|