在Windows7中加入了UAC(User Account Control,用户帐户控制)的功能,UAC是微软为提高系统安全而引入的,它要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员密码。通过在这些操作启动前对其进行验证,UAC可以帮助防止恶意软件和间谍软件在未经许可的情况下在计算机上进行安装或对计算机进行更改。
通常开发的exe程序默认是没有赋予管理员权限的,在Win7下将不以管理员权限运行,UAC将阻止程序访问系统的某些功能(如修改注册表的某些项,保存配置文件等操作),导致程序的部分功能不能正确执行。
鼠标右键点击要运行的exe程序图标,在弹出菜单中选择“以管理员身份运行”,在弹出的“用户账户控制”确认界面中选择“是”即可。
鼠标右键点击exe程序图标,在弹出的菜单中选择“属性”。
在弹出的界面中选择“兼容性”标签。
在“兼容性”页面中,勾选“以管理员身份运行此程序”,点击“确定”。
打开VS2005、VS2008、VS2010工程,查看在Properties下是否有app.manifest这个文件;如没有,按如下方式创建:鼠标右击工程在菜单中选择“属性”,点击工程属性的“安全性”标签,在安全性标签页中勾选“启用ClickOnce安全设置”,并选择“这是完全可信的应用程序”,保存工程,此时在Properties下已经自动生成了app.manifest文件。
在app.manifest文件中,我们可以看到有注释说明UAC选项,找到以下节点:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />将asInvoker,更改为requireAdministrator,更改后的app.manifest文件如下:
<?xml version="1.0" encoding="utf-8"?>编译更改后的工程,编译出来的exe文件将会自动以管理员权限运行。
禁用方法:“控制面板-用户账户和家庭安全-用户账户-用户账户控制设置”,设置为“从不通知”,保存,重启。
提醒:禁用UAC功能将降低了用户电脑的安全性,这也违背了Windows引入UAC的出发点。
UAC保护的是系统的关键资源,程序避开对UAC保护的资源的写入是比较好的解决办法,可以尝试以下方法:
<<前一篇 C#判断操作系统语言类型 | C#在Win7中创建、删除、写文件失败 后一篇>> |