调用winAPI方法,LogonUser,来模拟用户,win2000server 操作系统有的机器可以模拟,有的机器不能则不行,有文章说
win2000还需要一个特权,SE_TCB_NAME,一般进程是没有这个特权的,也无法获得这个特权。只有服务才有。所以win2000中,一般进程是无法LogonUser成功的。但服务进程中可以。请问C#如何提升进程特权以下是VC提升的方法,如何转换成C#
BOOL SetPrivilege (LPCTSTR privilege, BOOL bEnable)
    {
        TOKEN_PRIVILEGES tpPrev;
        TOKEN_PRIVILEGES tpNew;
        LUID    luid;
        HANDLE hProcToken;
        DWORD cbPrev;        if (!OpenProcessToken (GetCurrentProcess (), 
                TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, 
                &hProcToken))
        {
            print_msg (TEXT ("OpenProcessToken"));
            return FALSE;
        };        if (!LookupPrivilegeValue (NULL, privilege, &luid))
        {
            print_msg (TEXT ("LookupPrivilegeValue"));
            return FALSE;
        };        tpNew.PrivilegeCount = 1;
        tpNew.Privileges [0].Luid = luid;
        tpNew.Privileges [0].Attributes = 0;        if (!AdjustTokenPrivileges (hProcToken, FALSE, 
            &tpNew, sizeof (TOKEN_PRIVILEGES), 
            &tpPrev, &cbPrev))
        {
            print_msg (TEXT ("AdjustTokenPrivileges"));
            return FALSE;
        };
        tpPrev.PrivilegeCount = 1;
        tpPrev.Privileges[0].Luid = luid;        if(bEnable)
            tpPrev.Privileges[0].Attributes |= (SE_PRIVILEGE_ENABLED);
        else
            tpPrev.Privileges[0].Attributes ^= (SE_PRIVILEGE_ENABLED & tpPrev.Privileges[0].Attributes);        if (!AdjustTokenPrivileges (hProcToken, FALSE, 
            &tpPrev, cbPrev, NULL, NULL))
        {
            print_msg (TEXT ("AdjustTokenPrivileges"));
            return FALSE;
        }        CloseHandle (hProcToken);
        return TRUE;
    };