最近在系机房上网是发现一个很不爽的事:由于没有管理员权限,无法安装五笔输入法。于是想写一个程序向系统申请安装过程中需要的权限。不过我对2000的安全机制不太了解,想请大家提供一点思路。 谢谢。

解决方案 »

  1.   

    你的意思是:
    如果你用guest用户登陆,但是想有administrator一样的权限?这个问题基本上实现不了的。不过还是帮你顶!
      

  2.   

    我想并不需要administrator的所有权限,只要能顺利安装输入法就行了,比如写注册表的权限。
      

  3.   

    guest只有向注册表当前用户写的权限
    写LOCALMACHINE的内容必须是管理员权限
    写ALLUSER的也是管理员权限IME必须写localmachine部分吧
    当你写注册表的时候,如果没有相应的权限,它会提示你要这个管理员密码的,让管理员帮你输入就可以了。
    不过在使用的时候,如果要读这个注册表的内容恐怕是读不出来
      

  4.   

    IME的运行权限是很高的,也许会有办法提升自己的权限吧。
      

  5.   

    可以通过写程序来提升用户权限,然后进行你所要的操作:这里的取得权限的程序:HANDLE hdl;  
    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hdl);  
      PTOKEN_PRIVILEGES ptoken = (PTOKEN_PRIVILEGES) new BYTE[sizeof(DWORD) +  
    sizeof(LUID_AND_ATTRIBUTES)];  
    ptoken->PrivilegeCount = 1;  
    LUID uid;  
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &uid);   ptoken->Privileges[0].Luid = uid;  
    ptoken->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;  
    AdjustTokenPrivileges(hdl, FALSE, ptoken, 0, NULL, NULL);    //向进程表内写入数据
      CloseHandle(hdl);  
    delete [](BYTE *)ptoken;  
    //下面可以加入你所要进行的操作,考虑你想安装,这样是否可以,试一下:
             ShellExecute(NULL,"open","your install",NULL,SW_SHOWNORMAL);
    .......
      

  6.   

    更正一下:
    ShellExecute(NULL,"open","your install",NULL,NULL,SW_SHOWNORMAL);
      

  7.   

    to mfc168(闶阆):
      你给我一个SE_SHUTDOWN_NAME,这对我安装输入法有用吗?这可是一个关机权限啊。
      对注册表的访问权限是由它的security descriptor中的DACL来控制的。你去enable某种Privilege是不能得到访问权的。
      

  8.   

    我有一个笨办法, 首先 要看他 有没有 windows 输入法漏洞。方法是 在启动后 在要求输入用户名时,用ctrl+shift 调出 输入法 , 右键点击输入法状态栏,如果发现它的帮助没有禁用的话,那就是有了。打开帮助 右键点击右上方空白处,发现有跳致~~~,那就跳到
    C:\winnt\system32 下,随便找个应用程序 创建快捷方式,在属性目标指向中,输入 
    C:\winnt\system32\net.ext user aaa 1234 /add 运行一下快捷方式
    然后继续在目标中 输入 c:\winnt\system32\net.exe localgroup administrators aaa /add  运行一下快捷方式,这时候你就添加了一个 用户名为 aaa 密码为
    1234 的管理成员 ,现在你就可以随心所欲了!!
       呵呵,我原来在我们机房就这么干过!!
       试一下吧
      

  9.   

    从编程角度说,你要有写注册表的权限才能继续你的操作,可是使用PTOKEN_PRIVILEGES 这样的东西,你首先就要有管理员的权限来给你的程序申请写注册表的权限。如果你有管理员的密码,那可以做一个类似run as的东西出来,不过没有这个帐号的话,是不行的想象看,如果从一个guest可以通过编程实现权限提升,我指的是不利用漏洞,那么win的安全性从何谈起我建议你使用ptsec这个工具试试看,可以提升权限的,还不错