2009-07-06 36 views
8

Tôi đang cố gắng tìm cách để có được danh sách các phiên Windows? Tôi cần thông tin giống như thông tin được hiển thị trong Trình quản lý Tác vụ trên tab Người dùng. Tôi cần biết liệu người dùng có đang hoạt động hay không và nếu người đó đăng nhập vào phiên Remote Desktop.Cách nhận danh sách các phiên Windows?

Bất kỳ ý tưởng nào về cách thực hiện điều đó với C#/Windows XP Pro?

Trả lời

4

Tôi tin rằng bạn sẽ cần phải sử dụng P/Gọi để truy xuất thông tin này.

Các API có liên quan được ghi lại trong this MSDN page.

8

Như một điểm khởi đầu, bạn có thể có được một danh sách người dùng đăng nhập bằng cách chạy lệnh

qwinsta 

Từ dấu nhắc lệnh.

này sẽ cung cấp sản lượng như

C:\WINDOWS\system32>qwinsta 
SESSIONNAME  USERNAME     ID STATE TYPE  DEVICE 
>console   me      0 Active wdcon 
rdp-tcp         65536 Listen rdpwd 

và sẽ liệt kê bất kỳ phiên từ xa.

2

Bạn không cần phải sử dụng PInvoke. WMI làm điều đó, và tốt: "chọn Tên, SessionId từ Win32_Process" trong không gian tên root \ cimv2. Và, nó có thể được gọi từ một cỗ máy từ xa. Đơn giản hơn. Thêm vào một mệnh đề where trong select để tinh chỉnh những gì bạn nhận được.

+0

Điều này không trả về cùng thông tin như trên Trình quản lý tác vụ trên tab Người dùng. Nó trả về một định danh số nguyên của id phiên, không phải là tên người dùng hoặc SID của tài khoản mà theo đó quá trình được tạo. – codekaizen

Các vấn đề liên quan