一旦我的程序安装在客户端机器上,我如何强制我的程序在Windows 7上以管理员身份运行?
当前回答
您需要修改嵌入到程序中的清单。这适用于Visual Studio 2008及更高版本:项目+添加新项目,选择“应用程序清单文件”。将<requestedExecutionLevel>元素更改为:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
用户在启动程序时得到UAC提示。明智地使用;他们的耐心很快就会耗尽。
其他回答
您可以在EXE文件中嵌入清单文件,这将使Windows(7或更高版本)始终以管理员身份运行程序。
您可以在步骤6:创建和嵌入应用程序清单(UAC) (MSDN)中找到更多详细信息。
您需要修改嵌入到程序中的清单。这适用于Visual Studio 2008及更高版本:项目+添加新项目,选择“应用程序清单文件”。将<requestedExecutionLevel>元素更改为:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
用户在启动程序时得到UAC提示。明智地使用;他们的耐心很快就会耗尽。
这不会强制应用程序以管理员身份工作。 这是这个答案的简化版本,上面的@NG
public bool IsUserAdministrator()
{
try
{
WindowsIdentity user = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(user);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch
{
return false;
}
}
As的
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
如果您还没有或不知道如何添加应用程序清单,则需要添加应用程序清单。由于一些项目不会自动添加单独的清单文件,首先转到项目属性,导航到应用程序选项卡,并检查以确保您的项目没有排除在底部的清单。
接下来,右击项目 添加新项目 最后,找到并单击应用程序清单文件
添加一个requestedExecutionLevel元素到你的清单中只是战斗的一半;你必须记住UAC是可以关闭的。如果是,你必须执行老式的检查方法,如果用户不是管理员(在你的线程的CurrentPrincipal上调用IsInRole(WindowsBuiltInRole.Administrator)),就弹出一个错误对话框。
推荐文章
- 将字符串转换为System.IO.Stream
- 如何从枚举中选择一个随机值?
- 驻留在App_Code中的类不可访问
- 在链式LINQ扩展方法调用中等价于'let'关键字的代码
- dynamic (c# 4)和var之间的区别是什么?
- Visual Studio: ContextSwitchDeadlock
- 返回文件在ASP。Net Core Web API
- 自定义HttpClient请求头
- 如果我使用OWIN Startup.cs类并将所有配置移动到那里,我是否需要一个Global.asax.cs文件?
- VS2013外部构建错误"error MSB4019: The imported project <path> was not found"
- 从另一个列表id中排序一个列表
- 等待一个无效的异步方法
- 无法加载文件或程序集…参数不正确
- c#中枚举中的方法
- 如何从字符串中删除新的行字符?