一个简单升进程权限程序:
BOOL EnableDebugPrivilege(BOOL fEnable)
{
BOOL fOK = FALSE;
        HANDLE hToken = NULL;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
{
printf("test\n");
TOKEN_PRIVILEGES tp,tkpNew;
tp.PrivilegeCount =1;
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);
tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
fOK = (GetLastError()==ERROR_SUCCESS);
CloseHandle(hToken);
        }
        return fOK;
}
在xp和2003下可以正常运行
可是在windows server 2008 下GetLastError()的返回值为1300:并非所有被引用的特权都指派给呼叫方
请教高手帮忙,用户不是Administrator用户,但是是管理员用户,拥有Administration权限
我也尝试更改了:开始"-"设置"-"控制面板"-"管理工具"-"本地安全策略"-"本地策略"-"用户权限分配"-"调试程序"
和开始"-"设置"-"控制面板"-"管理工具"-"本地安全策略"-"本地策略"-"用户权限分配"-"将页面锁定内存"
GetLastError()的返回值依然为1300。
在windows server 2008应该如何提升程序权限呢?

解决方案 »

  1.   

    那就关掉用户权限控制好了
    1.开始--设置 --控制面板(切换成经典视图) --用户帐户--打开或关闭“用户账户控制”--取消选择 “使用用户控制帮助保护账户您的计算机”这个选项。确定重启系统就好了。2.同时按下键盘的“Win + R”键,在运行对话框中输入“msconfig”,打开“系统配置”。找到“工具”标签中,选中“禁用UAC”,单击“启动(L)”即可禁用此对话框--用户账户控制功能(UAC),需要重启系统
      

  2.   

    谢谢了,这样确实可以,
    在.exe的可以提升权限,但是生成.dll,加入snmp服务中还是得不到权限