gpt4 book ai didi

c++ - 如何查询类似于 "net use"的内存 UNC 连接?

转载 作者:行者123 更新时间:2023-11-27 23:33:05 26 4
gpt4 key购买 nike

我了解如何从注册表 (HKEY_CURRENT_USER\Network) 检索映射驱动器的 UNC 路径,但我还需要检索未映射的网络资源的远程连接。

例如,打开“运行”对话框并键入 <\server0123\share$>。如果我键入“net use”,我会看到此映射,但我无法确定此信息存储在文件系统或注册表中的位置。

alt text http://www.freeimagehosting.net/uploads/5bf1a0e3c5.jpg

有谁知道我可以从中查询这个的位置,或者我可以调用一个 API 来获取这个?非常欢迎涉及 vbscript、C 和 Delphi 的建议!

最佳答案

Mick,尝试使用 Win32_NetworkConnection WMI

检查这个样本

program GetWMI_Win32_NetworkConnection;

{$APPTYPE CONSOLE}

uses
SysUtils
,ActiveX
,ComObj
,Variants;


Procedure GetWin32_NetworkConnection;
var
objWMIService : OLEVariant;
colItems : OLEVariant;
colItem : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;

function GetWMIObject(const objectName: String): IDispatch;
var
chEaten: Integer;
BindCtx: IBindCtx;
Moniker: IMoniker;
begin
OleCheck(CreateBindCtx(0, bindCtx));
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
end;

begin
objWMIService := GetWMIObject('winmgmts:\\localhost\root\cimv2');
colItems := objWMIService.ExecQuery('SELECT * FROM Win32_NetworkConnection','WQL',0);
oEnum := IUnknown(colItems._NewEnum) as IEnumVariant;
while oEnum.Next(1, colItem, iValue) = 0 do
begin
Writeln('Caption '+colItem.Caption);
Writeln('Name '+colItem.Name);
Writeln('ConnectionState'+colItem.ConnectionState);
Writeln('ConnectionType '+colItem.ConnectionType);
Writeln('Description '+colItem.Description);
Writeln('DisplayType '+colItem.DisplayType);
Writeln('LocalName '+colItem.LocalName);
Writeln('ProviderName '+colItem.ProviderName);
Writeln('RemoteName '+colItem.RemoteName);
Writeln('RemotePath '+colItem.RemotePath);
Writeln('ResourceType '+colItem.ResourceType);
Writeln('Status '+colItem.Status);
Writeln('UserName '+colItem.UserName);
Writeln;
end;
end;


begin
try
CoInitialize(nil);
try
GetWin32_NetworkConnection;
Readln;
finally
CoUninitialize;
end;
except
on E:Exception do
Begin
Writeln(E.Classname, ': ', E.Message);
Readln;
End;
end;
end.

关于c++ - 如何查询类似于 "net use"的内存 UNC 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3366880/

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