亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? userinfo.c

?? apr-1.2.7.tar.gz源碼 支持svn的需求
?? C
字號:
/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as * applicable. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */#include "apr_private.h"#include "apr_strings.h"#include "apr_portable.h"#include "apr_user.h"#include "apr_arch_file_io.h"#if APR_HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifndef _WIN32_WCE/* Internal sid binary to string translation, see MSKB Q131320. * Several user related operations require our SID to access * the registry, but in a string format.  All error handling * depends on IsValidSid(), which internally we better test long * before we get here! */void get_sid_string(char *buf, apr_size_t blen, apr_uid_t id){    PSID_IDENTIFIER_AUTHORITY psia;    DWORD nsa;    DWORD sa;    int slen;    /* Determine authority values (these is a big-endian value,      * and NT records the value as hex if the value is > 2^32.)     */    psia = GetSidIdentifierAuthority(id);    nsa =  (DWORD)(psia->Value[5])        + ((DWORD)(psia->Value[4]) <<  8)        + ((DWORD)(psia->Value[3]) << 16) + ((DWORD)(psia->Value[2]) << 24);    sa  =  (DWORD)(psia->Value[1])        + ((DWORD)(psia->Value[0]) <<  8);    if (sa) {        slen = apr_snprintf(buf, blen, "S-%lu-0x%04x%08x",                            SID_REVISION, sa, nsa);    } else {        slen = apr_snprintf(buf, blen, "S-%lu-%lu",                            SID_REVISION, nsa);    }    /* Now append all the subauthority strings.     */    nsa = *GetSidSubAuthorityCount(id);    for (sa = 0; sa < nsa; ++sa) {        slen += apr_snprintf(buf + slen, blen - slen, "-%lu",                             *GetSidSubAuthority(id, sa));    }} #endif/* Query the ProfileImagePath from the version-specific branch, where the * regkey uses the user's name on 9x, and user's sid string on NT. */APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname,                                                const char *username,                                                apr_pool_t *p){#ifdef _WIN32_WCE    *dirname = apr_pstrdup(p, "/My Documents");    return APR_SUCCESS;#else    apr_status_t rv;    char regkey[MAX_PATH * 2];    char *fixch;    DWORD keylen;    DWORD type;    HKEY key;    if (apr_os_level >= APR_WIN_NT) {        apr_uid_t uid;        apr_gid_t gid;            if ((rv = apr_uid_get(&uid, &gid, username, p)) != APR_SUCCESS)            return rv;        strcpy(regkey, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\"                       "ProfileList\\");        keylen = (DWORD)strlen(regkey);        get_sid_string(regkey + keylen, sizeof(regkey) - keylen, uid);    }    else {        strcpy(regkey, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"                       "ProfileList\\");        keylen = (DWORD)strlen(regkey);        apr_cpystrn(regkey + keylen, username, sizeof(regkey) - keylen);    }    if ((rv = RegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey, 0,                            KEY_QUERY_VALUE, &key)) != ERROR_SUCCESS)        return APR_FROM_OS_ERROR(rv);#if APR_HAS_UNICODE_FS    IF_WIN_OS_IS_UNICODE    {        keylen = sizeof(regkey);        rv = RegQueryValueExW(key, L"ProfileImagePath", NULL, &type,                                   (void*)regkey, &keylen);        RegCloseKey(key);        if (rv != ERROR_SUCCESS)            return APR_FROM_OS_ERROR(rv);        if (type == REG_SZ) {            char retdir[MAX_PATH];            if ((rv = unicode_to_utf8_path(retdir, sizeof(retdir),                                            (apr_wchar_t*)regkey)) != APR_SUCCESS)                return rv;            *dirname = apr_pstrdup(p, retdir);        }        else if (type == REG_EXPAND_SZ) {            apr_wchar_t path[MAX_PATH];            char retdir[MAX_PATH];            ExpandEnvironmentStringsW((apr_wchar_t*)regkey, path, sizeof(path));            if ((rv = unicode_to_utf8_path(retdir, sizeof(retdir), path))                    != APR_SUCCESS)                return rv;            *dirname = apr_pstrdup(p, retdir);        }        else            return APR_ENOENT;    }#endif#if APR_HAS_ANSI_FS    ELSE_WIN_OS_IS_ANSI    {        keylen = sizeof(regkey);        rv = RegQueryValueEx(key, "ProfileImagePath", NULL, &type,                                  (void*)regkey, &keylen);        RegCloseKey(key);        if (rv != ERROR_SUCCESS)            return APR_FROM_OS_ERROR(rv);        if (type == REG_SZ) {            *dirname = apr_pstrdup(p, regkey);        }        else if (type == REG_EXPAND_SZ) {            char path[MAX_PATH];            ExpandEnvironmentStrings(regkey, path, sizeof(path));            *dirname = apr_pstrdup(p, path);        }        else            return APR_ENOENT;    }#endif /* APR_HAS_ANSI_FS */    for (fixch = *dirname; *fixch; ++fixch)        if (*fixch == '\\')            *fixch = '/';    return APR_SUCCESS;#endif /* _WIN32_WCE */}APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *uid,                                          apr_gid_t *gid,                                          apr_pool_t *p){#ifdef _WIN32_WCE    return APR_ENOTIMPL;#else    HANDLE threadtok;    DWORD needed;    TOKEN_USER *usr;    TOKEN_PRIMARY_GROUP *grp;        if(!OpenProcessToken(GetCurrentProcess(), STANDARD_RIGHTS_READ | READ_CONTROL | TOKEN_QUERY, &threadtok)) {        return apr_get_os_error();    }    *uid = NULL;    if (!GetTokenInformation(threadtok, TokenUser, NULL, 0, &needed)        && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)         && (usr = apr_palloc(p, needed))        && GetTokenInformation(threadtok, TokenUser, usr, needed, &needed))        *uid = usr->User.Sid;    else        return apr_get_os_error();    if (!GetTokenInformation(threadtok, TokenPrimaryGroup, NULL, 0, &needed)        && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)         && (grp = apr_palloc(p, needed))        && GetTokenInformation(threadtok, TokenPrimaryGroup, grp, needed, &needed))        *gid = grp->PrimaryGroup;    else        return apr_get_os_error();    return APR_SUCCESS;#endif }APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *uid, apr_gid_t *gid,                                      const char *username, apr_pool_t *p){#ifdef _WIN32_WCE    return APR_ENOTIMPL;#else    SID_NAME_USE sidtype;    char anydomain[256];    char *domain;    DWORD sidlen = 0;    DWORD domlen = sizeof(anydomain);    DWORD rv;    char *pos;    if (pos = strchr(username, '/')) {        domain = apr_pstrndup(p, username, pos - username);        username = pos + 1;    }    else if (pos = strchr(username, '\\')) {        domain = apr_pstrndup(p, username, pos - username);        username = pos + 1;    }    else {        domain = NULL;    }    /* Get nothing on the first pass ... need to size the sid buffer      */    rv = LookupAccountName(domain, username, domain, &sidlen,                            anydomain, &domlen, &sidtype);    if (sidlen) {        /* Give it back on the second pass         */        *uid = apr_palloc(p, sidlen);        domlen = sizeof(anydomain);        rv = LookupAccountName(domain, username, *uid, &sidlen,                                anydomain, &domlen, &sidtype);    }    if (!sidlen || !rv) {        return apr_get_os_error();    }    /* There doesn't seem to be a simple way to retrieve the primary group sid     */    *gid = NULL;    return APR_SUCCESS;#endif}APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid,                                           apr_pool_t *p){#ifdef _WIN32_WCE    *username = apr_pstrdup(p, "Administrator");    return APR_SUCCESS;#else    SID_NAME_USE type;    char name[MAX_PATH], domain[MAX_PATH];    DWORD cbname = sizeof(name), cbdomain = sizeof(domain);    if (!userid)        return APR_EINVAL;    if (!LookupAccountSid(NULL, userid, name, &cbname, domain, &cbdomain, &type))        return apr_get_os_error();    if (type != SidTypeUser && type != SidTypeAlias && type != SidTypeWellKnownGroup)        return APR_EINVAL;    *username = apr_pstrdup(p, name);    return APR_SUCCESS;#endif}  APR_DECLARE(apr_status_t) apr_uid_compare(apr_uid_t left, apr_uid_t right){    if (!left || !right)        return APR_EINVAL;#ifndef _WIN32_WCE    if (!IsValidSid(left) || !IsValidSid(right))        return APR_EINVAL;    if (!EqualSid(left, right))        return APR_EMISMATCH;#endif    return APR_SUCCESS;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本一道久久a久久精品| 精品国产免费人成电影在线观看四季 | 亚洲综合免费观看高清完整版| 天天综合天天综合色| 大桥未久av一区二区三区中文| 欧美一级一级性生活免费录像| 国产精品久久久久久久久搜平片| 日本亚洲三级在线| 欧美在线不卡一区| 中文字幕中文字幕中文字幕亚洲无线| 婷婷激情综合网| 一本一道波多野结衣一区二区| 久久一夜天堂av一区二区三区| 亚洲成a人片综合在线| 色综合色综合色综合| 国产精品久久久久三级| 国产一区中文字幕| 精品国一区二区三区| 蜜桃久久久久久久| 欧美一区二区三区啪啪| 亚洲一二三区不卡| 欧美唯美清纯偷拍| 亚洲国产精品一区二区久久恐怖片 | 国产一区二区三区四区在线观看| 宅男噜噜噜66一区二区66| 亚洲国产精品一区二区www在线| 99天天综合性| 一区在线观看免费| 99re视频精品| 亚洲一区二区三区四区在线| 色婷婷综合在线| 亚洲最色的网站| 欧美性受xxxx黑人xyx| 亚洲第一电影网| 欧美片网站yy| 美女网站在线免费欧美精品| 欧美精品自拍偷拍| 免费视频一区二区| 精品久久久久一区二区国产| 韩国在线一区二区| 中文字幕欧美激情| 97久久精品人人澡人人爽| 综合激情网...| 色av综合在线| 日产国产欧美视频一区精品| 日韩美女一区二区三区四区| 国产高清不卡一区二区| 国产精品久久久久久一区二区三区| 99视频热这里只有精品免费| 一级特黄大欧美久久久| 欧美顶级少妇做爰| 国产一区二区三区精品欧美日韩一区二区三区 | 首页国产欧美日韩丝袜| 欧美一区二区视频观看视频| 日精品一区二区三区| 日韩天堂在线观看| 欧洲生活片亚洲生活在线观看| 亚洲最色的网站| 69成人精品免费视频| 国产原创一区二区| 自拍偷自拍亚洲精品播放| 欧美视频一区在线| 国产一区欧美二区| 有码一区二区三区| 欧美变态tickle挠乳网站| 99久久精品国产一区| 丝袜美腿亚洲一区二区图片| 久久一区二区视频| 欧美专区亚洲专区| 久久久久久日产精品| 亚洲国产精品一区二区www在线| 国产二区国产一区在线观看 | av在线不卡观看免费观看| 一区二区三区日韩在线观看| 欧美成人a在线| 色又黄又爽网站www久久| 蜜桃久久av一区| 亚洲欧美日韩中文字幕一区二区三区| 5月丁香婷婷综合| 99在线精品视频| 国产精品综合在线视频| 性感美女久久精品| 最新中文字幕一区二区三区| 精品三级在线看| 69堂国产成人免费视频| 91免费国产在线观看| 国产高清成人在线| 久久激五月天综合精品| 亚洲成人午夜影院| 亚洲你懂的在线视频| 国产亚洲精品超碰| 精品免费一区二区三区| 欧美电影在哪看比较好| 色美美综合视频| 成人美女视频在线观看| 国产精品主播直播| 久久成人精品无人区| 日本成人中文字幕在线视频| 亚洲已满18点击进入久久| 国产精品欧美一区喷水| 久久久久久**毛片大全| 欧美精品一区男女天堂| 精品国精品国产尤物美女| 7777女厕盗摄久久久| 欧美日韩一区二区不卡| 色噜噜狠狠一区二区三区果冻| 国产精品88av| 成人精品小蝌蚪| 成人精品国产一区二区4080| 国产精品亚洲成人| 国产精品99久久久久久似苏梦涵| 精品写真视频在线观看| 激情偷乱视频一区二区三区| 久久99精品久久久久久国产越南| 日韩福利视频网| 麻豆高清免费国产一区| 免费成人美女在线观看.| 久久精品国产精品青草| 青草国产精品久久久久久| 免费观看在线综合色| 蜜臀av性久久久久蜜臀av麻豆| 久久国产成人午夜av影院| 欧美日韩免费在线视频| 欧美日韩中文一区| 4438x成人网最大色成网站| 日韩精品一区二区三区四区视频| 欧美va亚洲va国产综合| 久久久久久久久蜜桃| 国产精品久久二区二区| 一区二区久久久久| 日本人妖一区二区| 国产精品自拍一区| av资源站一区| 欧美日韩国产电影| 久久综合99re88久久爱| 国产精品超碰97尤物18| 亚洲综合色网站| 久久成人精品无人区| 成人精品一区二区三区四区| 欧美怡红院视频| 精品美女被调教视频大全网站| 国产精品美女久久久久久2018 | 乱一区二区av| 丰满少妇在线播放bd日韩电影| 不卡一区二区在线| 欧美日韩免费观看一区二区三区 | 日韩三级免费观看| 欧美激情中文不卡| 婷婷激情综合网| 国产成人av电影在线播放| 色激情天天射综合网| 欧美精品一区二区高清在线观看| 国产精品久久三区| 秋霞午夜av一区二区三区| 成人午夜激情影院| 欧美日本在线观看| 国产精品美女一区二区三区 | 亚洲美女屁股眼交| 日本亚洲免费观看| 91捆绑美女网站| 久久影音资源网| 亚洲高清在线精品| 成人精品在线视频观看| 日韩亚洲欧美成人一区| 亚洲精品美国一| 国产精品性做久久久久久| 欧美绝品在线观看成人午夜影视| 国产欧美日本一区视频| 午夜天堂影视香蕉久久| 成人福利视频网站| 久久亚洲一级片| 日韩av一二三| 97精品视频在线观看自产线路二| 精品国产91久久久久久久妲己| 亚洲综合久久久| 成人高清av在线| 久久久久国产精品麻豆 | 天堂在线一区二区| 成人免费不卡视频| 久久综合色婷婷| 免费精品99久久国产综合精品| 欧美性淫爽ww久久久久无| 日韩理论片一区二区| 成人性生交大片免费看视频在线 | 国产一区二区在线免费观看| 欧美日韩另类一区| 亚洲国产中文字幕| 91色porny在线视频| 中文字幕一区二区在线播放| 国产成人精品一区二| 久久伊99综合婷婷久久伊| 极品少妇xxxx精品少妇| 日韩欧美一二三| 美女在线观看视频一区二区| 欧美一区二区三区视频| 强制捆绑调教一区二区| 日韩欧美一区二区在线视频| 麻豆精品新av中文字幕| 精品少妇一区二区三区免费观看| 麻豆91小视频|