C#中如何动态提升权限
C#中,以下问题: 1。如何判断哪个动作需要管理员权限? 比如运行时向Program Files子目录下写入文件时,怎么知道当前用户权限不够? 2。在知道当前权限不够的情况下,如果弹出UAC(用户权限控制开窗),来动态提升当前进程权限? 不是在程式运行前通过Run As等提升,而是进程已启动后,在一个操作没有权限的情况下,开启UAC开窗以获得管理员权限
加上mainfest文件,或者将其作为资源编译,具体参考《windows核心编程》第四章
1 try..catch 分析message 2 window系统说 你的要求很过分, 目前你可以在运行前或者运行后使用run as 或者某种api提升进程的权限,无法为某个操作提升权限
安全意识很不错:)
最简单的做法是:重启自己,并要求提升:
C# code?... startInfo.FileName = Application.ExecutablePath; startInfo.Arguments = the operation we want to perform; startInfo.Verb = "runas"; //<-- Process p = Process.Start(startInfo);
QuitCurrentProcess();
其他的方法包括:另外写个要求UAC提升的程序,作为'操作服务器',由当前程序调用'操作服务器'来执行任务。这里的'调用'可以用WCF(remoting),COM,Socket等来实现。
|