【发布时间】:2018-07-20 11:30:37
【问题描述】:
我编写了一个 .NET Core Mac OSX 菜单代理应用程序(即 UI 是菜单栏中带有上下文菜单的图标)。
此应用程序的功能之一是主机文件更新(即从 /etc/hosts 添加/删除条目)。但是要写入文件,您需要 sudo 权限。
文件更新使用System.IO.File.WriteAllText重写整个文件。
我该怎么做:
以 sudo 启动应用程序(以某种方式提示),同时仍允许用户单击应用程序而不是从终端启动,或者
以某种方式为 File.WriteAllText 命令提供 sudo 访问权限(在需要时提示用户)。
简而言之,我需要做什么才能提供更新 hosts 文件的权限?
【问题讨论】:
-
在 Windows 上,我将使用
runas启动我的程序的第二个实例,并提升权限以执行所需的修改。我认为使用 sudo 应该可以做到这样的事情。 -
是的,windows 不是问题......但我需要尽可能专业。打开终端询问您的密码不会减少它。其他应用程序在需要提升权限时提示我输入指纹或密码,所以一定有可能
-
是的,应该有一些系统组件可以调用来执行此操作。但是我对osx不熟悉,不能告诉你是哪一个。
-
会成为 App Store 应用吗?还是临时安装?
-
@BlackSpy 我会在 Xamarin.Mac 中以编程方式使用 AppleScript,它使用具有管理员权限的
shell。 (我在我的代理风格应用程序中使用这种方式)。AuthorizationExecuteWithPrivileges自 10.7 以来已被弃用,使用SMJobBless和 XPC 是为您的用例设置的痛苦(并且您需要一个 Apple Developer 许可证才能获得您必须签署两个应用程序的证书)。如果你需要一个简单的让我知道,我会添加一个答案...
标签: c# macos xamarin .net-core