【发布时间】:2014-05-02 07:12:19
【问题描述】:
当用户单击按钮时,我需要在 Windows 8 平板电脑上启用/禁用所有网络适配器(有点像飞行模式)。
这可以通过 Powershell 中的以下 cmdlet 来完成:“Disable-NetAdapter * –Confirm:$false”,它是对应的 Enable-NetAdapter。他们做的正是我期望他们做的,但我有两个问题:
我不想从 WPF 应用程序运行 Powershell。由于它是基于 .NET Framework 构建的,有没有什么方法可以在不调用 cmdlet 的情况下做同样的事情?
它需要提升权限(例如使用右键单击 +“以管理员身份运行”启动应用程序)。我可以从代码中获得提升的权限,但我总是得到用户访问控制弹出请求批准。有没有办法在不弹出窗口的情况下始终以提升的权限启动应用程序?
【问题讨论】:
-
如果程序有办法绕过 UAC,那将毫无用处。
-
您能否请求提升权限以运行包含单击按钮的应用程序?
-
想一想你的最后一个问题。如果您始终可以以提升的权限启动应用程序,但没有收到 UAC 提示 - 这难道不是网络威胁的完美解决方案吗?您希望您的应用程序提示用户输入 UAC,但我认为没有办法通过 .NET 绕过它 - 应该是这样。
-
正如 cloyd800 所说,没有办法自动提升您编写的代码,只有由“windows 发布者”证书进行数字签名并位于一些特殊文件夹中的代码(如
%SystemRoot%\System32)允许自动提升自己 (source)。这样在控制面板中打开项目之类的操作就不会导致 UAC 提示(就像在 Vista 中所做的那样)。您编写程序的唯一方法是您是 Microsoft 的员工。
标签: c# wpf powershell