| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1210 人关注过本帖
标题:c#——提升注册表操作的权限
只看楼主 加入收藏
wangzhen_andy
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:39
专家分:25
注 册:2008-9-22
结帖率:50%
收藏
 问题点数:0 回复次数:0 
c#——提升注册表操作的权限
今天搞了一天,用c#调用windows的api,用来提升备份和恢复数据库的权限,但GetLastWin32Error()返回998,表示程序访问了禁止访问的地址空间。纠结中,求教!

调试代码如下:
    static void Main(string[] args)
    {   
        IntPtr hToken = new IntPtr();
        
        bool retn = OpenProcessToken(Process.GetCurrentProcess().Handle, TokenAccessLevels.AdjustPrivileges, ref hToken);
        if (!retn)
            // 获取令牌失败!
            return;
        TokenPrivileges tp;  // 新特权结构体
        LUID Luid;
        retn = LookupPrivilegeValue(null, "SeRestorePrivilege", out Luid);     
        if (retn != true)
        {
            //获取Uid失败
            return;
        }
        tp.privilegecount = 1;
        tp.privileges.attributes = SE_PRIVILEGE_ENABLED;          // 这个参数的值不知道是否正确?
        tp.privileges.pluid = Luid;            

        AdjustTokenPrivileges(hToken, false, tp, 4 + (12 * tp.privilegecount), IntPtr.Zero, IntPtr.Zero);

        int retVal = RegLoadKey(HKEY_CURRENT_USER, @"Software\Kingsoft\Office\6.0\Common\updateinfo", @"d:\abc.reg");
        Console.Error.WriteLine(Marshal.GetLastWin32Error());
    }

搜索更多相关主题的帖子: 数据库 windows return 注册表 
2011-11-10 22:01
快速回复:c#——提升注册表操作的权限
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030120 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved