[英]How to programmatically discover mapped network drives on system and their server names?
[英]Discover Mapped Network Drives as Administrator
我有一個必須以管理員身份運行的 c# 應用程序。 除了許多其他事情之外,應用程序還必須讀取映射的網絡驅動器。
我想用 WMI 和 Win32_NetworkConnection 來做這件事,但這只能作為非管理員工作。
有解決方法嗎? 我最好的選擇是什么?
提前致謝!
編輯:
這是我的代碼,即使連接了 3 個網絡驅動器,它也會返回一個空列表:
public IEnumerable<NetworkConnection> GetNetworkConnections()
{
List<NetworkConnection> networkConnections = new List<NetworkConnection>();
try
{
var path = new ManagementPath();
path.NamespacePath = "\\ROOT\\CIMV2";
path.ClassName = "Win32_NetworkConnection"; //https://msdn.microsoft.com/en-us/library/aa394220(v=vs.85).aspx
var management = new ManagementClass(path);
foreach (ManagementObject obj in management.GetInstances())
{
NetworkConnection networkConnection = new NetworkConnection()
{
LocalName = (string)obj.Properties["LocalName"].Value,
Name = (string)obj.Properties["Name"].Value,
RemotePath = (string)obj.Properties["RemotePath"].Value,
UserName = (string)obj.Properties["UserName"].Value,
IsPersistent = (bool)obj.Properties["Persistent"].Value,
ConnectionState = (string)obj.Properties["ConnectionState"].Value
};
networkConnections.Add(networkConnection);
}
}
catch (Exception ex)
{
log.Error($"Failed to get network connections.", ex);
}
return networkConnections;
}
我嘗試了一些東西,但這是我找到的唯一解決方法。
如何啟用 EnableLinkedConnections
單擊“開始”,在“開始程序和文件”框中鍵入regedit ,然后按 Enter。
找到並右鍵單擊注冊表子項HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 。
指向新建,然后單擊DWORD值。
鍵入EnableLinkedConnections ,然后按ENTER 。
右鍵單擊EnableLinkedConnections ,然后單擊修改。
在數值數據框中,鍵入1 ,然后單擊確定。
退出注冊表編輯器,然后重新啟動計算機。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.