[C#]解决程序Vista/Win7下因UAC导致的读写错误
在微软的操作系统中,vista和win7加入了UAC的功能,UAC(User Account Control,用户帐户控制)是微软为提高系统安全而在Windows Vista中引入的新技术,它要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员密码。通过在这些操作启动前对其进行验证,UAC 可以帮助防止恶意软件和间谍软件在未经许可的情况下在计算机上进行安装或对计算机进行更改。
如图中所示,不属于 Windows 的一部分的程序需要您的许可才能启动。它具有指明其名称和发行者的有效的数字签名,该数字签名可以帮助确保该程序正是其所声明的程序。确保该程序正是您要运行的程序。
但是这样对于我们来说,会有这样一种情况出现,我们开发的程序默认是没有给它管理员权限的,如果我们把程序安装了到系统盘下,那么某些读写程序目录下配置文件的操作就无法正确执行,因为被UAC阻拦,但是程序却无法告诉我们什么时候被阻拦,因为我们无法获取到UAC的阻拦信息。
很遗憾,我们最近开发的程序就出现了这种问题,测试了很多次,一个装有win7系统的客户向我们回馈了这个问题,我经过自己思考和搜索MSDN,想了一下,大概有3种方法解决,给大家分享一下:
1:关闭用户的UAC功能(显然这个方法对于客户来说有点不靠谱,但是这里我也提一下,因为我就是特别烦UAC的提醒,所以给关闭了,程序一直也没有报错)。
关闭方法“控制面板-用户账户和家庭安全-用户账户-用户账户控制设置”,设置为“从不通知”,保存,重启就OK了。
2:这个方法很简单,就是在运行的时候右键“以管理员身份运行”。也是可以解决此问题,但是对于那些只想直接单击就运行的用户来说,估计他们也还是难以接受。
3:这个方法就比较长些了,解决出发点也是从我们自己的程序来解决。我来写一下步骤:
<1>.在项目中“新建项”,选择“应用程序清单”,自己命名文件名称,如下图所示:
<2>.打开建立的清单文件,扩展名为.manifest,查看代码,如下图:
我们可以看到有注释说明UAC选项,我们需要更改的是这个节点的内容:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />将asInvoker,更改为requireAdministrator,以字面意思,我们大家就可以看出这个是请求以管理员权限运行的意思。当然还有一个选项,highestAvailable,网上没有直接翻译,但从字面理解,就是获取最高执行权限的意思,这个可以根据自己的实际情况来设置。
<3>.打开项目属性,将“应用程序-资源”中的“清单”一项选择为你创建的清单文件,如图:
然后生成一下应用就可以了。
文章到这基本就结束了,这里也只是简单的解决目前自己遇到的问题,网上查询了一下,很多也都是英文的介绍,无奈哥们E文实在不是太好,勉强看懂了一些,实践了一下,解决了手里的问题,希望能帮到遇到同样问题的朋友。 备注:VS2008和VS2010下添加清单,都如本文一样,VS2005会比较麻烦一些,我机器上只装了08和10,没有尝试如何采用05解决,请装了05的哥们尝试一下自己解决吧,或者升级到08或者10吧。
参考文献:
1:Using Manifests to Elevate an application in Vista
2:Create and Embed an Application Manifest (UAC)
[C#]解决程序Vista/Win7下因UAC导致的读写错误的更多相关文章
- [转]让程序不触发 Vista/Win7下应用程序兼容性助手弹出 .
原文地址 http://blog.csdn.net/maxuhuiabc/article/details/6081874 在Vista/Win7下 运行一个 exe 应用程序后,系统经常弹出 兼容性助 ...
- 【已解决】Android Studio下,gradle project sync failed 错误
原文:[已解决]Android Studio下,gradle project sync failed 错误 Android studio下突然报错 gradle project sync failed ...
- VS2003在vista/win7下搜索会出现僵死
1. VS2003在vista下搜索关键词的时候会出现僵死的问题的解决方案: VS2003快捷方式右击选中属性->兼容性页签 : 选中用兼容模式运行这个程序,下拉框中用windows xp2 ...
- 让你的WPF程序在Win7下呈现Win8风格主题
今天在Win8下使用了一个我之前写的一个WPF程序的时候,发现现在也支持Win8效果了(记得以前的.net 4.0的版本是不支持的).由于WPF的控件是自绘的,并不受系统主题所控制,也就是说.net ...
- 转:win7下git凭据导致无法clone代码
win7下存在一个凭据管理的情况,如果旧凭据没有删除,用新账户是无法clone代码的. https://blog.csdn.net/qq_34665539/article/details/804082 ...
- 终于解决了一个Win7 下 VS 编译的问题,困扰了我好几个月
用 Win7 一年多了,一直在这个环境下编程,其他都挺好,就是有个问题非常恶心,在VS下编译经常出现进程正在使用,无法覆盖的错误,这个问题我记得博问中以前也有其他人遇到过,也没有解决掉.此问题困扰了我 ...
- vs2005 ,2008,2010中引入app.manifest(即c#程序在win7下以管理员权限运行方法)
打开VS2005.VS2008.VS2010工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件:如没有,按如下方式创建:鼠标右击工程在菜单中选择“属性”,点击工 ...
- VS2005 VS2008编译的程序在Win7下以管理员身份运行的设置
在VS2005或者VS2008 里面,直接项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator 重新编译 这样你的程序直接运行就拥有管理 ...
- csharp:引入app.manifest,程序在win7下以管理员权限运行配置方法
https://msdn.microsoft.com/en-us/library/windows/desktop/hh848036(v=vs.85).aspx https://msdn.microso ...
随机推荐
- 制作ramdisk-u.img根文件系统
具体步骤如下:1.解压内核源码树解压linux-2.6.29-mini2440-20090708.tgz到自己的工作目录,会生成一个友善之臂修改过的并且有几个mini2440默认配置文件的内核源码目录 ...
- 判断字符串是否为json字符串
public static class JsonSplitExtention { public static bool IsJson(this string json) { return JsonSp ...
- Java精选笔记_JSP开发模型
JSP开发模型 JSP Model JSP Model1简单轻便,适合小型Web项目的快速开发. JSP Model2模型是在JSP Model1的基础上提出的,它提供了更清晰的代码分层,更适用于多人 ...
- swift--Timer实现定时器功能,每个一段时间执行具体函数,可以重复,也可以只执行一次
1,创建 //控制器 timer = Timer.scheduledTimer(timeInterval: 0.001, target: self, selector: #selector(Fifte ...
- 关于cstring ->string-> const char * 用U2A一步转换 错误的内存问题
// CStringTest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #incl ...
- 演示PostgreSQL的详细安装及配置图解
右击文件选择以管理员身份运行 2 开始执行程序的安装 3 设置安装目录 4 设置数据的保存目录 5 设置数据库管理员密码,请牢记此密码. 6 设置端口号,选择默认的端口号即可 7 根据自己选择设置地区 ...
- MYSQL系列之(一)
mysql简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...
- CentOS下安装cvechecker并进行主机基线安全检查
一.cvechecker的安装 1.首先下载cvechecker并解压该文件: cd /home/username mkdir cve wget https://raw.githubuserconte ...
- ios获取设备手持方向——电子罗盘
转:http://book.51cto.com/art/201411/457105.htm 2014-11-15 19:07 张亚飞/崔巍 中国铁道出版社 字号:T | T 综合评级: 想读() 在 ...
- 【Android】Android软件开发之ListView 详解
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xys289187120.blog.51cto.com/3361352/65717 ...