11

我编写了一个监控 IMAP 电子邮件帐户的程序。它按计划运行,在我旅行的笔记本电脑上运行。有时当我的互联网连接是通过我的移动设备连接时它会运行,它有一个计量连接(也就是说,我按 GB 付费),我不希望它这样做,因为它使用大量带宽,它可以等待直到带宽可用。

所以问题是:.NET 程序如何确定它使用的连接何时被计量?

4

2 回答 2

6

简单搜索 MSDN 发现 NetworkInformation.GetInternetConnectionProfile 函数。它看起来像是 Metro 界面的正式一部分,但我听说桌面应用程序可以访问大多数 Metro 库。

于 2013-11-14T00:05:58.957 回答
0

在 2021 年,您可以使用 powershell .NET 框架和类似的注册 KEY 来测试您的以太网连接是否设置为计量:

$definition = @"
using System;
using System.Runtime.InteropServices;

namespace Win32Api
{

    public class NtDll
    {
        [DllImport("ntdll.dll", EntryPoint="RtlAdjustPrivilege")]
        public static extern int RtlAdjustPrivilege(ulong Privilege, bool Enable, bool CurrentThread, ref bool Enabled);
    }
}
"@

Add-Type -TypeDefinition $definition -PassThru | Out-Null
[Win32Api.NtDll]::RtlAdjustPrivilege(9, $true, $false, [ref]$false) | Out-Null

#Setting ownership to Administrators
$key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost",[Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree,[System.Security.AccessControl.RegistryRights]::takeownership)
$acl = $key.GetAccessControl()
# Use your account "Administrators" or any other which is actually an existing one on your account
$acl.SetOwner([System.Security.Principal.NTAccount]"Administrators")
$key.SetAccessControl($acl)

#Giving Administrators full control to the key
$rule = New-Object System.Security.AccessControl.RegistryAccessRule ([System.Security.Principal.NTAccount]"Administrators","FullControl","Allow")
$acl.SetAccessRule($rule)
$key.SetAccessControl($acl)
$path = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost"
# you can check for "Ethernet" "Wifi" "4G" etc.
$name = "Ethernet"
#If the Value is 2 = metered
New-ItemProperty -Path $path -Name $name -Value "2" -PropertyType DWORD -Force | Out-Null

如果您收到以下错误:

Exception calling "SetAccessRule" with "1" argument(s): "Some or all identity references could not be translated.".

尝试将“管理员”用户更改为您帐户中存在且具有管理员权限的任何其他用户。

于 2021-02-18T13:45:06.827 回答