gpt4 book ai didi

windows - EnumDesktops 命名的所有桌面都无法打开桌面,错误为 2 "File not found"

转载 作者:可可西里 更新时间:2023-11-01 10:07:29 24 4
gpt4 key购买 nike

我枚举了我系统上的桌面(我正在使用 SysInternals Desktops,所以我知道我有额外的东西)使用:

EnumDesktops(Nothing, AddressOf EnumDesktopsProc, Nothing)

使用这些声明:

Private Declare Auto Function EnumDesktops Lib "User32" (ByVal hWinSta As IntPtr, ByVal edp As EnumDesktopProc, ByVal lParam As IntPtr) As Boolean
Private Declare Auto Function OpenDesktop Lib "User32" (<MarshalAs(UnmanagedType.LPTStr)> ByVal DesktopName As String, ByVal dwFlags As Integer, <MarshalAs(UnmanagedType.Bool)>ByVal fInherit As Boolean, ByVal dwDesiredAccess As AccessMask) As DesktopHandle

Private desktopNames As New List(Of String)

Private Delegate Function EnumDesktopProc(<MarshalAs(UnmanagedType.LPTStr)>ByVal DesktopName As String, ByVal lParam As IntPtr) As Boolean

Private Function EnumDesktopsProc(
ByVal DesktopName As String,
ByVal lParam As IntPtr
) As Boolean

desktopNames.Add(DesktopName)
Return True
End Function

我检索到:

"WinSta0"
"Service-0x0-3e7$"
"Service-0x0-3e4$"
"Service-0x0-3e5$"
"SAWinSta"
"__X78B95_89_IW"
"Service-0x0-119d1e$"
"Service-0x0-4e05f$"

当我尝试用以下方式打开它们时:

OpenDesktop(DesktopName, 0, False, AccessMask.DESKTOP_ENUMERATE)

(其中 AccessMask 是一个大的 Enum 复制数据 herehere ,而 DesktopHandle 是一个 SafeHandle )

它们都返回 NULL(Nothing)并且 GetLastWin32Error 返回 2“系统找不到指定的文件。”。为什么?

我检查了 OpenDesktop 的备用声明和不同的 AccessMask 值,但没有任何效果(除非声明实际上是错误的)。我注意到,在向 DesktopName 添加“路径”时,我可能会遇到不同的错误,特别是 161“The specified path is invalid.”

最佳答案

EnumDesktops 的文档即使没有错误,至少也具有误导性。传递 NULL(Nothing)作为第一个参数是返回“Session 0”窗口站的桌面。您需要使用 GetProcessWindowStation() 的结果。 IE。将上面的第一行更改为:

Private Declare Auto Function GetProcessWindowStation Lib "User32" () As IntPtr

EnumDesktops(GetProcessWindowStation(), AddressOf EnumDesktopsProc, Nothing)

(在 EnumDesktops documentation 中添加了一条用户评论,但我错过了,所以我认为其他人也可能。)

注意 GetProcessWindowStation 的文档 explicitly says它不需要关闭,因此不需要包装在 SafeHandle 中。

关于windows - EnumDesktops 命名的所有桌面都无法打开桌面,错误为 2 "File not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13323174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com