C#让程序自动以管理员身份运行
UAC来控制程序访问
工具:VS 2008
第一步,
新建一个项目(winform)
第二步,
在新建项目中,新建项 应用程序清单文件(app.manifest)
第三步,
打开 app.manifest 文件
修改 <requestedExecutionLevel level="asInvoker" uiAccess="false" />
修改为 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
重新编译 打开 debug目录 就可以看到图标右下角有个小盾牌的标识。
如下代码:
<?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">
<!-- UAC 清单选项
如果希望更改 Windows 用户帐户控制级别,请用以下节点之一替换
requestedExecutionLevel 节点。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
如果您希望利用文件和注册表虚拟化提供
向后兼容性,请删除 requestedExecutionLevel 节点。
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
第四步,
程序中判断是否以管理员身份运行
代码如下:
/// <summary>
/// 当前是否是管理员身份运行
/// </summary>
/// <returns></returns>
public static bool IsAdministrator()
{
try
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch
{
return true;
}
}
其他:
C# 修改IP地址
static void SetNetworkAdapter()
{
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (!(bool)mo["IPEnabled"])
continue;
//设置ip地址和子网掩码
inPar = mo.GetMethodParameters("EnableStatic");
inPar["IPAddress"] = new string[] { "10.22.21.111", "192.168.1.9" };
inPar["SubnetMask"] = new string[] { "255.255.255.0", "255.255.255.0" };
outPar = mo.InvokeMethod("EnableStatic", inPar, null);
//设置网关地址
inPar = mo.GetMethodParameters("SetGateways");
inPar["DefaultIPGateway"] = new string[] { "10.22.21.1", "192.168.10.1" };
outPar = mo.InvokeMethod("SetGateways", inPar, null);
//设置DNS
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
inPar["DNSServerSearchOrder"] = new string[] { "179.32.42.4", "179.32.42.5" };
outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
break;
}
}
分享到:
相关推荐
### C# 让程序自动以管理员身份运行 #### 背景与问题描述 在Windows Vista及后续版本的Windows 7等操作系统中,为了增强系统的安全性,引入了**用户账户控制(User Account Control, UAC)**机制。该机制旨在防止...
### C#程序以管理员权限运行的方法详解 #### 一、背景介绍 随着Windows Vista以及后续版本如Windows 7等操作系统的发布,微软引入了一个重要的安全特性——用户账户控制(User Account Control, UAC)。UAC的主要...
如果需要程序对所有用户生效,那么必须以管理员权限运行程序并添加到`HKEY_LOCAL_MACHINE`。 此外,需要注意的是,操作注册表需要程序具有相应的权限。在.NET 2.0及更高版本中,C#程序默认在非管理员权限下运行,...
1. **使用权限控制**:应用程序可以尝试提升其权限,使其成为管理员级别的进程。管理员权限的进程通常拥有更高的权限,更不容易被普通用户结束。但这种方法并不是完全安全的,因为管理员权限也可能被更高权限的进程...
这通常需要管理员权限。 此外,另一种方法是使用计划任务,通过`Task Scheduler` API来创建一个计划任务,使其在用户登录时启动你的程序。这种方法相对简单,但不适用于无密码登录的场景。 综上所述,实现"C# ...
2. **.NET Framework或.NET Core**:C#程序通常运行在.NET Framework或.NET Core上,这两个框架提供了大量的API,用于文件操作、网络通信等。自动升级程序会利用这些API来下载、解压和替换旧版本的文件。 3. **网络...
6. **权限管理**:考虑到安全性和权限问题,可能需要以管理员权限运行更新过程。可以使用`ProcessStartInfo`类设置适当的运行级别。 7. **源代码管理**:项目文件`TestDemo.sln`和`.suo`是Visual Studio解决方案和...
这段脚本的作用是向 Windows 注册表中添加一系列新的键值,这些键值允许用户在右键菜单中选择“管理员取得所有权”,从而以管理员权限运行指定的应用程序或文件夹。其中 `takeown` 和 `icacls` 命令分别用于获取文件...
8. **权限管理**:运行解压后的exe文件可能需要管理员权限,这时可以使用`ProcessStartInfo`类设置必要的权限。 9. **用户体验**:良好的用户交互设计是关键,包括进度条显示、错误提示、取消更新等。 通过以上...
7. **权限管理**:由于运行时更新涉及到文件系统的操作,可能需要管理员权限。.NET提供了CodeAccessPermission类来检查和请求必要的权限。 8. **用户体验**:在更新过程中,保持良好的用户体验至关重要。这可能意味...
// 添加管理员权限,因为关机需要管理员权限 // 创建Process对象并启动命令 Process process = new Process(); process.StartInfo = psi; process.Start(); Console.WriteLine($"系统将在{delayInMinutes}...
5. **处理权限**:在Windows系统中,某些操作可能需要管理员权限,例如修改系统文件或注册表项。程序需要能够适当地请求提升权限,并处理可能出现的权限问题。 6. **重启或关闭应用**:更新安装后,可能需要重新...
1. **系统安全**:防止恶意软件、病毒等未经授权的程序自动运行。 2. **资源管理**:在多用户环境中,限制某些用户运行高资源消耗的程序。 3. **家庭使用**:避免孩子玩特定的游戏或使用特定的应用程序。 4. **企业...
例如,某些文件可能需要管理员权限才能修改。此外,为了防止恶意攻击,需要对从服务器接收到的数据进行验证,如校验签名或证书。 6. **设计更新接口** 设计一个友好的用户界面,让用户了解更新状态,选择是否立即...
- **权限要求**:根据程序的需求,可能需要用户以管理员权限运行,以便能够修改注册表和系统设置。 在压缩包中的`test`文件可能是程序的源代码、编译后的可执行文件或其他相关资源。为了深入了解这个内存驻留程序的...
- **权限管理**:如果更新涉及修改系统文件,可能需要管理员权限。使用`Manifest`文件可以声明程序需要的权限。 - **用户体验**:提供清晰的更新提示和进度反馈,让用户了解更新状态。 - **版本控制**:合理规划版本...
例如,管理员、普通用户、编辑员等角色,它们分别对应不同的操作权限。 6. **权限控制**:权限控制是权限系统的核心,涉及对页面操作的访问限制,如添加、修改、删除、查看、导入和导出。权限控制通常通过权限分配...
- **权限问题**:由于涉及到对其他进程的操控,可能需要管理员权限运行程序。 - **兼容性**:QQ的界面可能会随着版本更新而改变,这可能会影响自动化脚本的稳定性。因此,需要定期更新或适应新的界面元素定位方式。 ...
关闭其他进程可能需要相应的权限,例如管理员权限。如果程序没有足够的权限,`Process.Kill()`可能会抛出`AccessDeniedException`。确保在执行这类操作时,程序有足够的权限或处理这类异常。 此外,还可以通过监控...
在Windows操作系统中,让一个程序在开机时自动启动是一个常见的需求。...同时,对于非管理员用户,他们可能没有权限修改`HKEY_LOCAL_MACHINE`下的注册表键,因此在设计用户界面时要给出相应的提示。