ClickOnce 和管理员权限

有些程序需要管理员权限需要运行,同时又想用ClickOnce进行发布,这时候就麻烦了,两者是互斥的。

解决方案是,去掉管理员权限的要求,可以进行发布。

程序启动的时候,加载程序员权限的请求。

代码如下:

if (WindowsIdentity.GetCurrent().Owner == WindowsIdentity.GetCurrent().User) // Check for Admin privileges
{
try
{
this.Visible = false;
ProcessStartInfo info = new ProcessStartInfo(Application.ExecutablePath);
info.UseShellExecute = true;
info.Verb = "runas"; // invoke UAC prompt
Process.Start(info);
}
catch (Win32Exception ex)
{
if (ex.NativeErrorCode == 1223)
MessageBox.Show("该程序需要管理员权限,您必须选择“是”");
else
MessageBox.Show("程序发生错误,错误信息是:" + ex.Message);
}
Application.Exit();
}

时间: 2024-08-07 00:18:54

ClickOnce 和管理员权限的相关文章

vs下给生成的程序(exe)加入默认的申请管理员权限

在vs下编程时,经常会用到一些特殊的权限,尤其是管理员权限,下面是在win7下笔者亲测通过的. 下面要分两种情况: 第一种情况就是在vs2003或者以下的编译器中运行 1.准备一个manifest文件,命名如下:XPStyle.manifest 文件的内容如下: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:sc

vs2005 ,2008,2010中引入app.manifest(即c#程序在win7下以管理员权限运行方法)

打开VS2005.VS2008.VS2010工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件:如没有,按如下方式创建:鼠标右击工程在菜单中选择“属性”,点击工程属性的“安全性”标签,在安全性标签页中勾选“启用ClickOnce安全设置”,并选择“这是完全可信的应用程序”,保存工程,此时在Properties下已经自动生成了app.manifest文件. 将默认的app.manifest文件修改为 [html] view plain copy <?xml 

c# 如何获取系统管理员权限(UAC) 及判断当前是否是管理员权限

环境说明: VS2012,windows 7  亲自验证过win7 和xp ,XP直接不弹框,因为XP没有UAC控制机制 步骤1: 右键项目-->属性-->安全性-->选中[启用ClickOnce安全设置] 此时在我们的项目下Properties目录下多了个叫 app.manifest  的文件 步骤2: 文件里面的代码如下,我们只需要将以下这句更改了即可 <requestedExecutionLevel level="asInvoker" uiAccess=&

让win7变成无线路由(需要用管理员权限打开)最后完善.rar

让win7变成无线路由(需要用管理员权限打开)最后完善.bat @ECHO OFF CLS color 0a netsh wlan show drivers ECHO.★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ECHO.★以上是你的无线网卡信息,查看你的网卡是否支持承载网络★ ECHO.★ ★ ECHO.★ 持请更新一个通过微软认证的驱动! ★ ECHO.★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ECHO. ECHO. GOTO MENU :MENU ECHO.

自己的电脑为什么没有管理员权限?

自己的电脑为什么没有管理员权限? 电脑人人有 提示:自己的电脑为什么没有足够的权限?这是微软的操作系统,照顾电脑新手的缘故,虽然每次操作都要咨询一遍,显得很麻烦,但安全的原因,操作系统还不至于轻易被不良程序击毁!一旦掌握自我防范的技巧,那就可以将这些警示级别降低,从而提高操作的效率. 步骤阅读 方法/步骤 1 使用鼠标点击屏幕右下方的开始按钮(蓝色四方图标)→控制面板 2 查看方式→小图标→用户账户 3 找到账户→更改账户类型 4 点选管理员→更改账户类型 5 使用鼠标右键点击开始按钮(蓝色四方

判断当前进程是否以管理员权限运行(AllocateAndInitializeSid后,用CheckTokenMembership与AdministratorsGroup进行比较,和Delphi的那个例子还有点不一样)

在Win7下(Vista以上的...)有时某些操作就是会让人郁闷 开启了UAC的话,得以管理员权限运行才不会出现Access is denied... 但是,程序又不是非得什么时候都用那破管理员权限的 总不能在manifest里加权限,然后用户运行时老弹确认吧? 当然啦,可以将需要管理员权限的部分写到另一个小程序,需要时调用它就行了 不过还是不爽,如果是一个小小的程序还要再加另一个小小小程序的话 那好,干脆判断是不是Win7...开启了UAC没有之类 开启的话再判断下是不是以管理员权限运行,不是

Windows 8提升普通管理员权限为超级管理员权限以及激活超级管理员Administrator

在Windows 8下运行某些操作时(比如删除一些文件或者更改某些系统设置时)系统会提示我们权限不够.须要Administrator账户的权限. 相信很多其它的使用者都会觉得自己当前使用的账户已经是系统中最大权限的全部者了,为什么还会来个Administrator的用户权限呢?其实,在Windows系列的操作系统上.超级管理员(也就是最大权限全部者)默认情况下都是Administrator,并且在XP.Windows 7上,刚装好系统后就有了一个账户,此账户便是超级管理员Administrato

linux 创建新用户并增加管理员权限

1.adduser与useradd有什么区别?2.那种方式会自动创建组.用户组等信息? 3.如何新建用户具有管理员权限? $是普通管员,#是系统管理员,root用户默认是没有密码的,因此也就无法使用(据说是为了安全).想用root的话,得给root用户设置一个密码:sudo passwd root然后登录时用户名输入root,再输入密码就行了. 例子:adduser user1这样他就会自动创建用户主目录,创建用户同名的组.[email protected]:~# sudo adduser db

【转】mfc win7获得管理员权限 使用WIN7风格 使用当前系统风格

原帖:http://blog.csdn.net/zengweicdut/article/details/8837688 在win7下,操作系统文件夹下的东西,需要程序拥有管理员权限才可以,程序拥有管理员权限的方法为: 一.添加管理员权限 1.在Resource View中添加一个文件夹,名称为24,将文件夹下的资源名称改为1.操作如图: (1) (2) (3) 2.在资源1中添加下面的值,将下面的文字复制,粘贴进去就可以: <?xml version="1.0" encoding