Tag: uac

在C#中处理UAC的正确方法

我有一个应用程序(Windows服务)安装在Program Files文件夹中的目录中。 除此应用程序外,还有另一个WinForms应用程序,用于配置服务(以及其他内容)。 在进行配置时,它会将更改保存到与服务一起存在的配置文件中。 在Vista / Win7上运行时,UAC会阻止用户保存到配置文件。 我想做的是: 将屏蔽图标放在用于配置的菜单项旁边 选择此项时提示UAC权限 仅在需要它的操作系统上显示图标/提示 仅在需要权限时显示图标/提示符(例如,如果应用程序安装在不需要UAC权限的地方) 我真的不想以管理员身份运行整个应用程序,因为它也用于不需要UAC权限的其他目的(因此设置应用程序清单文件不是正确的解决方案)。 我也假设(如果我错了,请纠正我),一旦授予UAC权限,我的现有流程就无法执行操作,我需要启动一个新流程。 我怎样才能做到最好?

提升权限不适用于UseShellExecute = false

我想启动一个子进程(实际上是相同的控制台应用程序),具有提升的权限但隐藏窗口。 我做下一个: var info = new ProcessStartInfo(Assembly.GetEntryAssembly().Location) { UseShellExecute = true, // ! Verb = “runas”, }; var process = new Process { StartInfo = info }; process.Start(); 这工作: var identity = new WindowsPrincipal(WindowsIdentity.GetCurrent()); identity.IsInRole(WindowsBuiltInRole.Administrator); // returns true 但UseShellExecute = true会创建一个新窗口,我也无法重定向输出。 所以我下次做的时候: var info = new ProcessStartInfo(Assembly.GetEntryAssembly().Location) { RedirectStandardError = true, RedirectStandardOutput = true, UseShellExecute […]

Windows 7和Vista UAC – 以编程方式请求C#中的提升

我有一个程序,在极少数情况下只需要提升到Admin,所以我不想设置我的清单以要求永久性提升。 我怎样才能在我需要时以编程方式请求提升? 我正在使用C#

从非管理员应用程序以管理员身份运行流程

从未以管理员身份运行的应用程序,我有以下代码: ProcessStartInfo proc = new ProcessStartInfo(); proc.WindowStyle = ProcessWindowStyle.Normal; proc.FileName = myExePath; proc.CreateNoWindow = false; proc.UseShellExecute = false; proc.Verb = “runas”; 当我调用Process.Start(proc)时,我没有弹出请求以管理员身份运行的权限,并且exe不以管理员身份运行。 我尝试将app.manifest添加到myExePath中找到的可执行文件,并将requestedExecutionLevel更新为 使用更新的app.manifest,在Process.Start(proc)调用中,我得到一个exception,“请求的操作需要提升。” 为什么.Verb操作没有设置管理员权限? 我正在测试Windows Server 2008 R2 Standard。