如何以管理员身份启动c#控制台应用程序
本文关键字:控制台 应用程序 启动 身份 管理员 | 更新日期: 2023-09-27 18:13:19
我有一个通过控制台运行的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();
如果我可以启动应用程序而不提示用户以admin身份启动(UAC废话),那就太好了。我尝试添加清单文件并将执行级别更改为admin,但这似乎不起作用,或者我的应用程序忽略了该文件(我不知道)。
如果没有UAC提示,您将无法获得此工作。一切正常
如果你愿意在这段代码出现时出现一个控制台窗口,你可以让它在这段代码运行时给你一个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提示发生