我已经尝试了 Stackoverflow.com 中描述的所有可能的解决方案,但我无法使应用程序以管理员身份运行或提示管理员权限。
I tried:
- 使用 runAs="requireAdministrator" 创建清单
- 手动设置“verb = 'runAs'”
但每个实例都只是调用另一个没有权限的实例,它只是一直循环。 :(
该项目非常简单,我找不到问题所在。
你能这么温柔地帮助我吗?!
谢谢!!!
编辑:循环行为发生在 Windows 7 中。在 Windows XP 中,它会请求许可,甚至输入有效的用户/密码似乎也会失败。它不会循环,但仅调用第一个没有管理员权限的实例。
编辑 2:相同的代码在 Windows 8 中工作正常。Windows XP 没有 UAC,因此它无法工作。仅 Windows 7 仍然存在此问题。
编辑3:经过多次尝试,我得出的结论是,使用通用“用户”配置文件(Windows 中的默认设置)设置的用户,该应用程序不会提示管理员访问权限。这看起来很奇怪,是否应该拥有管理员配置文件,以便应用程序可以提示管理访问权限?! :S
我的清单
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
代码...
public partial class MainWindow : Window
{
public MainWindow()
{
Juca.raisePermissions();
InitializeComponent();
if (Juca.gotPower())
{
lblBad.Visibility = Visibility.Hidden;
lblGreat.Visibility = Visibility.Visible;
}
else
{
lblBad.Visibility = Visibility.Visible;
lblGreat.Visibility = Visibility.Hidden;
}
}
}
class Juca
{
public static bool gotPower()
{
var IdentidadeWindows = WindowsIdentity.GetCurrent();
var IdentidadePrincipal = new WindowsPrincipal(IdentidadeWindows);
return IdentidadePrincipal.IsInRole(WindowsBuiltInRole.Administrator);
}
public static void raisePermissions()
{
if (!gotPower())
{
MessageBox.Show("I shall raise your permissions");
var processInfo = new ProcessStartInfo(Assembly.GetCallingAssembly().CodeBase);
processInfo.UseShellExecute = true;
processInfo.Verb = "runas";
try
{
Process.Start(processInfo);
}
catch (Win32Exception ex)
{
MessageBox.Show("Could not raise at all... :(");
}
}
}
}
您在 ProcessStartInfo 中指定了“runas”动词。 “Runas”显示为“以管理员身份运行”。它适用于管理员帐户。对于普通用户配置文件,只有“runasuser”可用,shell 将打开一个登录对话框,输入管理员帐户名和密码。
您可以在 HKEY_CLASSES_ROOT\exefile\shell 中检查 .exe 文件的动词
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)