第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Windows - 在運(yùn)行測(cè)試之前檢查計(jì)算機(jī)是否被鎖定/注銷

Windows - 在運(yùn)行測(cè)試之前檢查計(jì)算機(jī)是否被鎖定/注銷

C#
阿晨1998 2022-12-24 12:13:58
我有一套 UI 測(cè)試,可以根據(jù)情況在本地/遠(yuǎn)程運(yùn)行。有時(shí),只要有重要的更新要應(yīng)用,遠(yuǎn)程計(jì)算機(jī)就會(huì)自動(dòng)重啟。這會(huì)導(dǎo)致所有測(cè)試超時(shí),因?yàn)樗鼈冞\(yùn)行的遠(yuǎn)程計(jì)算機(jī)被鎖定并且無法再訪問 GUI。我想知道如何快速檢查計(jì)算機(jī)是否已鎖定,這樣我就可以快速使測(cè)試失敗并記錄它們處于脫機(jī)狀態(tài)。我在網(wǎng)上找到了這個(gè)解決方案,但它似乎更適合開發(fā)而不是測(cè)試。https://bytes.com/topic/net/answers/770957-get-computer-state-locked-stand-c真的只是想要一種干凈的方法來使用 C# 庫(kù)檢查當(dāng)前機(jī)器是否被鎖定,并將其放入如下所示的方法中。public bool IsWindowsLocked(){     // Check if the current machine is in a locked state}
查看完整描述

1 回答

?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊

不幸的是,實(shí)際上并沒有任何干凈的方法來執(zhí)行此操作,至少我找不到,除非您愿意使用類似query userwithPsExec的方法在每臺(tái) PC 上將其作為子進(jìn)程遠(yuǎn)程執(zhí)行,然后解析結(jié)果。即使那樣,您也無法直接獲得有關(guān)鎖定狀態(tài)的答案,您將不得不按空閑時(shí)間進(jìn)行處理,因?yàn)楫?dāng)沒有人使用計(jì)算機(jī)時(shí),狀態(tài)會(huì)將其中一個(gè)用戶顯示為活動(dòng)狀態(tài)。

然后是多個(gè)用戶登錄計(jì)算機(jī)的問題,使用 Windows 7 或更高版本中的切換用戶功能。在我的環(huán)境中,一臺(tái) PC 可能有 3 或 4 個(gè)后臺(tái)用戶和一個(gè)控制臺(tái)用戶。在某些情況下,PC 由 RDP 用戶使用。事實(shí)證明,當(dāng)您通過 RDP 連接到計(jì)算機(jī)然后登錄到控制臺(tái)或執(zhí)行相反操作時(shí),會(huì)出現(xiàn)一種特殊情況,因?yàn)樵谶@些情況下 LogonSession LogonType 不會(huì)更新。不幸的是,也有可能捕捉到用戶剛剛登錄計(jì)算機(jī),在這種情況下,我的函數(shù)將錯(cuò)誤地指出計(jì)算機(jī)未在使用中。

在我的 PC 和網(wǎng)絡(luò)上,如果 PC 打開,此函數(shù)運(yùn)行大約需要 0.2 秒。在某些 PC 上,它可能需要更長(zhǎng)的時(shí)間(最多 20 秒),因?yàn)樗鼤?huì)在 PC 上加載 perfmon 提供程序。如果 PC 關(guān)閉,超時(shí)時(shí)間會(huì)很長(zhǎng),如果可能的話,我建議先進(jìn)行 ping 檢查。

基本上,該函數(shù)使用 WMI 獲取 LogonSession 和交互式桌面信息,并Process獲取 LogonUI 和資源管理器進(jìn)程。由于 LogonSession 返回已注銷的舊會(huì)話,以及 UAC 管理程序和其他 (Windows 10) 后臺(tái)進(jìn)程 (DWM/UMFD) 的會(huì)話,因此我們只計(jì)算具有explorer.exe進(jìn)程(桌面)的 LogonSession。

然后它將信息組合成不同的情況:

  1. 如果 LogonUI 進(jìn)程數(shù)大于或等于交互式桌面數(shù),PC 將被注銷或鎖定。如果PC上有任何LogonSession(帶explorer),則鎖定,否則注銷。

  2. 如果 LogonUI 進(jìn)程數(shù)少于交互式桌面數(shù),則 PC 正在使用中。

這是代碼:

enum PCUserStatuses {

    Locked, // all users are locked

    LoggedOff, // No users are logged in

    InUse, // A user is using this computer

    Unknown // unable to connect to computer / other error

}


PCUserStatuses GetPCUserStatus(string machineName) {

    try {

        var scope = GetManagementScope(machineName);

        scope.Connect();


        var explorerProcesses = Process.GetProcessesByName("explorer", machineName)

                                    .Select(p => p.Id.ToString())

                                    .ToHashSet();


        var REprocessid = new Regex(@"(?<=Handle="").*?(?="")", RegexOptions.Compiled);


        var numberOfLogonSessionsWithExplorer = new ManagementObjectSearcher(scope, new SelectQuery("SELECT * FROM Win32_SessionProcess")).Get()

                                                    .Cast<ManagementObject>()

                                                    .Where(mo => explorerProcesses.Contains(REprocessid.Match(mo["Dependent"].ToString()).Value))

                                                    .Select(mo => mo["Antecedent"].ToString())

                                                    .Distinct()

                                                    .Count();


        var numberOfUserDesktops = new ManagementObjectSearcher(scope, new SelectQuery("select * from win32_Perfrawdata_TermService_TerminalServicesSession")).Get().Count - 1; // don't count Service desktop

        var numberOflogonUIProcesses = Process.GetProcessesByName("LogonUI", machineName).Length;


        if (numberOflogonUIProcesses >= numberOfUserDesktops) {

            if (numberOfLogonSessionsWithExplorer > 0)

                return PCUserStatuses.Locked;

            else

                return PCUserStatuses.LoggedOff;

        }

        else

            return PCUserStatuses.InUse;

    }

    catch {

        return PCUserStatuses.Unknown;

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-12-24
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)