【问题标题】:How to start a C# console application as administrator [duplicate]如何以管理员身份启动 C# 控制台应用程序 [重复]
【发布时间】:2014-07-18 00:02:32
【问题描述】:

我有一个通过控制台运行的 wcf Web 服务。如果我以管理员身份启动服务,即右键单击可执行文件并以管理员身份运行,那么它可以工作,但如果我只是打开它,它会抱怨并说“http 无法注册 url http //+ 80/ ......”。 或者,我可以在我的 c# 代码中运行 netsh 并添加 URL(我想),但这也需要管理员权限。 我试过:这段代码,GetIP()获取ip地址v4的字符串文字

ProcessStartInfo procInfo = new ProcessStartInfo
{
    WorkingDirectory = Path.GetPathRoot(Environment.SystemDirectory),
    FileName = Path.Combine(Environment.SystemDirectory, "netsh.exe"),
    Arguments = "netsh http add urlacl url=http://" + GetIP() + ":80/VSPDataLogger/ user=everyone",
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    UseShellExecute = false,
    CreateNoWindow = true,
    WindowStyle = ProcessWindowStyle.Hidden
};

Process proc = Process.Start(procInfo);
proc.WaitForExit();

如果我可以在不提示用户以管理员身份启动的情况下启动应用程序(UAC 废话),那就太好了。 我尝试添加清单文件并将执行级别更改为管理员,但这似乎不起作用,或者我的应用程序忽略了该文件(我不知道)。

【问题讨论】:

  • 如果您作为程序员可以在没有 UAC 的情况下获得管理员权限,那么恶意软件编写者不会也这样做吗?
  • UAC 的全部意义在于要求特权。如果您不希望用户收到提示,则需要告诉他们关闭 UAC。虽然您可能认为这是无稽之谈,但它提供了一种处理权限提升的有效方法,通常不应关闭。
  • 您可能无法绕过 UAC,但您可以右键单击应用程序的图标,转到属性 > 快捷方式 > 高级并选择“以管理员身份运行”。它至少会确保人们在正确的模式下使用它,并且当他们没有正确使用它时不会责怪你:)。抱歉,它有点点头,但它有效。
  • @Hockey 这就是清单的用途,请参阅How to force my .NET App to run as administrator on Windows 7?

标签: c# wcf admin netsh


【解决方案1】:

如果没有 UAC 提示,您将无法正常工作。它按设计工作。

【讨论】:

  • 此外,如果您没有恶意,您让用户安装 WCF 服务的机会也应该可以解决您的问题?
  • 谢谢,我想我得走那条路了。 . . .#sigh
【解决方案2】:

如果您愿意忍受在这段代码短暂出现时出现的控制台窗口,您可以让它在这段代码运行时给您一个 UAC 提示,而不是每次启动程序时。

ProcessStartInfo procInfo = new ProcessStartInfo
{
    WorkingDirectory = Path.GetPathRoot(Environment.SystemDirectory),
    FileName = Path.Combine(Environment.SystemDirectory, "netsh.exe"),
    Arguments = "netsh http add urlacl url=http://" + GetIP() + ":80/VSPDataLogger/ user=everyone",
    UseShellExecute = true,
    startInfo.Verb = "runas";
};

Process proc = Process.Start(procInfo);
proc.WaitForExit();

没有办法做到这一点,所以不会出现 UAC 提示。

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2023-03-29
    • 2014-09-11
    • 1970-01-01
    相关资源
    最近更新 更多