我生如山
My Links
C++博客
首页
新随笔
联系
聚合
管理
Blog Stats
Posts - 27
Stories - 0
Comments - 21
Trackbacks - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
PET工作总结
(rss)
尘封故事(1)
(rss)
沉思录(3)
(rss)
旅游
(rss)
生活(1)
(rss)
网文采摘(3)
(rss)
音乐随想
(rss)
职业生涯
(rss)
随笔档案
2010年9月 (2)
2009年11月 (1)
2009年7月 (1)
2009年6月 (2)
2009年5月 (11)
2008年12月 (2)
2008年10月 (4)
2008年9月 (4)
公用链接
中文爱百科
可信赖的中文百科全书
搜索
最新评论
1. re: [转载]滤波和卷积的资料汇总
评论内容较长,点击标题查看
--sdafasd
2. re: 在.Net Framework中动态创建类型---System.Reflection.Emit命名空间小试
偶遇留言
--agri521
3. re: 还是怀念一个人爬山的感觉
呵呵,不是香格里拉:)是北京户外的一条经典拉练路线,香山-八大处@呵呵
--悟山
4. re: 还是怀念一个人爬山的感觉
评论内容较长,点击标题查看
--呵呵
5. re: 还是怀念一个人爬山的感觉
大家偶尔都会有心情低落的时候@深邃者
--悟山
阅读排行榜
1. 在Win32 Window应用程序中启用Console输出(2955)
2. 还是怀念一个人爬山的感觉(2030)
3. [图像处理]自适应局部图像阈值处理(Adaptive Local Thresholding)(1810)
4. *控制流图(1699)
5. [转载]解剖XP最核心的dll——NTDLL.dll (1131)
评论排行榜
1. 还是怀念一个人爬山的感觉(10)
2. 我依然选择爱的深沉(3)
3. 害怕(2)
4. [Win32]用Mutex控制程序的运行实例数目(2)
5. [导入][转载]个人收藏的编程下载资源全部公布(1)
[C#学习笔记]在Vista或者Server2008下以Admin模式启动程序
原文(参考文章)链接:
http://www.codeproject.com/KB/vista-security/UAC_Shield_for_Elevation.aspx
Vista和Windows Server 2008上面系统的UAC(User Account Control)默认是开启的,用户在一般情况下并通过双击启动程序都不是以管理员模式运行。但是,在很多情况下,为了在程序里面访问系统的某些特定资源,需要当前程序的identity具有admin的权限。那么这就需要涉及到检测当前程序的执行用户是否处于管理员模式,在当前程序不处于admin模式的情况以admin模式下重启程序。
参考了
http://www.codeproject.com/KB/vista-security/UAC_Shield_for_Elevation.aspx
这篇文章,做如下学习笔记。
为了检测当前进程的之行用户是否是管理员,需要用到CLR种System.Security.Principal名称空间种的WindowsIdentity类和WindowsPrincipal类。下面是代码,很好理解:
static
bool
IsAdmin()
{
WindowsIdentity identity
=
WindowsIdentity.GetCurrent();
WindowsPrincipal principle
=
new
WindowsPrincipal(identity);
return
principle.IsInRole(WindowsBuiltInRole.Administrator);
}
如果当前进程不是处于管理员模式,那么我们可以重启这个程序。为了重启程序使用了System.Diagnostics名称空间下的Process类,Process类调用命令行下的"runas"命令,以管理员模式重新启动当前程序。代码如下,也很好理解:
static
void
RestartProcessElevated()
{
ProcessStartInfo info
=
new
ProcessStartInfo();
info.UseShellExecute
=
true
;
info.WorkingDirectory
=
Environment.CurrentDirectory;
info.FileName
=
System.Windows.Forms.Application.ExecutablePath;
info.Verb
=
"
runas
"
;
try
{
Process.Start(info);
}
catch
(System.ComponentModel.Win32Exception ex)
{
Console.WriteLine(
"
Exception:{0}
"
, ex.Message);
return
;
}
System.Windows.Forms.Application.Exit();
}
posted on 2009-05-22 18:36
悟山
阅读(350)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 悟山