我正在处理屏幕共享项目。但是我在捕获安全桌面时遇到了麻烦。 我已经问过相关问题here并得到了答案
请通过上面的链接
如类风虫所建议。我正在使用PsExec
exe捕获安全桌面/ winlogon桌面,如下所示:
/ x和/ s开关在SYSTEM帐户下和Winlogon桌面上运行该过程。
PsExec / i / h / x / d / s“ path_ \ screencapture.exe”
现在screencapture exe作为winlogon桌面上的SYSTEM帐户运行,我可以在用户登录屏幕上看到screencapture exe,但在用户桌面屏幕上看不到。
现在情况相反,我可以捕获用户登录屏幕,但不能捕获用户桌面。
用户桌面显示空白/黑屏。
如果我从下面的命令中删除/ x,那么我能够获得不安全桌面的userdesktop
PsExec / i / h / d / s“ path_ \ screencapture.exe”
我的问题是是否有任何办法
答案 0 :(得分:2)
自从我工作以来,我无法检验自己的理论。 +我还没有发表评论的权利...所以,如果这不起作用,请忍受我。
作为系统运行可能与它没有“桌面”目录有关。 因此,请创建以下目录:
32-bit: %windir%\System32\config\systemprofile\desktop
64-bit: %windir%\SYSWOW64\config\systemprofile\desktop
使用SYSTEM帐户重试:
PsExec -i -h -x -d -s“ path_ \ screencapture.exe”
有时工作目录是“只读”,因此通过指定您可以使其正常工作
PsExec -i -h -x -d -s -w c:\ temp“ path_ \ screencapture.exe”
如果这不起作用,请尝试将其附加到会话上,查询可用的用户会话,以查看安全桌面是否正在运行其自己的会话,请在命令提示符下输入以下内容:
查询会话
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>console xxxx 2 Active
rdp-tcp 65536 Listen
我这里唯一可用的会话是services = 0和mylogin = 2。
我建议尝试
PsExec -i 0 -h -x -d -s -w c:\ temp“ path_ \ screencapture.exe”
或
PsExec -i 2 -h -x -d -s -w c:\ temp“ path_ \ screencapture.exe”
看看捕获的内容是否有差异。
我以前从未使用过安全桌面,因此它可能是额外的一层。在用户情况下,-i对我而言一直很好。
祝你好运:)
修改:
我已经运气测试过了,这就是我所做的:
用gui下载了捕获工具,我尝试了7capture.com
然后我像这样启动7capture.exe:
PsExec -i -s -x c:\ 7capture.exe
现在,我在某些地方显示了“以管理员身份运行”的安全桌面。当弹出窗口出现时,我按了ALT + TAB键,然后捕获了7个:)
按下“刷新”按钮以查看项目列表。我的计算机上的“桌面”称为“ $$$ Secure UAP Background window”。
Voila,拍摄并可见
现在输入Screenshot secure desktop上的代码
我将更改桌面HWND呼叫:
Win32Stuff.GetDesktopWindow();
要使用枚举功能,并为在安全桌面中找到的每个HWND拍照。
未经测试,但我相信您可以使用:
[DllImport("user32.dll")]
private static extern bool EnumWindows(EnumWindowsProc enumProc, IntPtr lParam);
// Delegate to filter which windows to include
public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
尝试一下,看看是否可以使它适用于所有情况。
Edit2:
由于这是2个不同的用户范围,因此您需要运行Screencapture.exe的两个副本。一种用于安全桌面,另一种用于交互式会话:
UAC:
PsExec -i -h -x -d -s“ path_ \ screencapture.exe”
没有UAC:
PsExec -i -h -d“ path_ \ screencapture.exe”