import subprocess
def open_share(to_shared_adapter, from_shared_adapter):
"""
打开以太网的网络共享
:return: None
"""
powershell_script = f"""
# Register the HNetCfg library (once)
# regsvr32 hnetcfg.dll
# Create a NetSharingManager object
$m = New-Object -ComObject HNetCfg.HNetShare
# List connections
$m.EnumEveryConnection |% {{ $m.NetConnectionProps.Invoke($_) }}
# Find connection
$c = $m.EnumEveryConnection |? {{ $m.NetConnectionProps.Invoke($_).Name -eq "{to_shared_adapter}" }}
$c2 = $m.EnumEveryConnection |? {{ $m.NetConnectionProps.Invoke($_).Name -eq "{from_shared_adapter}" }}
# Get sharing configuration
$config = $m.INetSharingConfigurationForINetConnection.Invoke($c)
$config2 = $m.INetSharingConfigurationForINetConnection.Invoke($c2)
# See if sharing is enabled
Write-Output $config.SharingEnabled
Write-Output $config2.SharingEnabled
# See the role of connection in sharing
# 0 - public, 1 - private
# Only meaningful if SharingEnabled is True
Write-Output $config.SharingType
Write-Output $config2.SharingType
$config.EnableSharing(0)
$config2.EnableSharing(1)
"""
process = subprocess.Popen(
['powershell', '-Command', powershell_script],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
stdout, stderr = process.communicate()
def close_share(to_shared_adapter, from_shared_adapter):
"""
打开以太网的网络共享
:return: None
"""
powershell_script = f"""
# Register the HNetCfg library (once)
# regsvr32 hnetcfg.dll
# Create a NetSharingManager object
$m = New-Object -ComObject HNetCfg.HNetShare
# List connections
$m.EnumEveryConnection |% {{ $m.NetConnectionProps.Invoke($_) }}
# Find connection
$c = $m.EnumEveryConnection |? {{ $m.NetConnectionProps.Invoke($_).Name -eq "{to_shared_adapter}" }}
$c2 = $m.EnumEveryConnection |? {{ $m.NetConnectionProps.Invoke($_).Name -eq "{from_shared_adapter}" }}
# Get sharing configuration
$config = $m.INetSharingConfigurationForINetConnection.Invoke($c)
$config2 = $m.INetSharingConfigurationForINetConnection.Invoke($c2)
# Enable sharing (0 - public, 1 - private)
$config.DisableSharing()
$config2.DisableSharing()
"""
process = subprocess.Popen(
['powershell', '-Command', powershell_script],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
stdout, stderr = process.communicate()
if __name__ == '__main__':
to_shared_adapter = "以太网"
from_shared_adapter = "以太网 7"
open_share(to_shared_adapter, from_shared_adapter)
close_share(to_shared_adapter, from_shared_adapter)