• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            zhiye_wang

            向星空仰望的越深,越發(fā)現(xiàn)自己的渺小

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              31 隨筆 :: 1 文章 :: 2 評論 :: 0 Trackbacks

            #

            在構(gòu)造自己的類時(shí),有可能會碰到兩個(gè)類之間的相互引用問題,例如:定義了類A類B,A中使用了B定義的類型,B中也使用了A定義的類型
            例如:
            類CGUICmd中調(diào)用了類CMainFrame。
            類CMainFrame中調(diào)用了類CGUICmd。
            //////////////////////////////////////////////////////////////////////////
            /// GUICmd.h
             
            #ifndef _GUI_CMD_H
            #define _GUI_CMD_H
             
            class CGUICmd
            {
            public:
            CGUICmd(void);
            ~CGUICmd(void);
            int Gui_GetMessage(HWND hWnd, SOCKET sService, int bBlocking, CMainFrame* pFrame);
             
            public:
            SOCKET sService;
            };
            //////////////////////////////////////////////////////////////////////////
            /// main_frame.h
             
            #ifndef _MAIN_FRAME_H
            #define _MAIN_FRAME_H
             
            class CMainFrame:public CXMLWnd
            {
            public:
            CGUICmd m_cGuiCmd;
            };
            不能單純的再對方的源文件中互相包含頭文件。
            較好的方式:
            main_frame.h 中#include "GUICmd.h", 
            CGUICmd.h 中加入一行:class CMainFrame;
            CGUICmd.cpp 中#include "main_frame.h"
            //////////////////////////////////////////////////////////////////////////
            /// main_frame.h
             
            #ifndef _MAIN_FRAME_H
            #define _MAIN_FRAME_H
             
            #pragma once
             
            #include "GUICmd.h"    
            //////////////////////////////////////////////////////////////////////////
            /// GUICmd.cpp
             
            #include "GUICmd.h"
            #include "main_frame.h"
             
             
            //////////////////////////////////////////////////////////////////////////
            /// GUICmd.h
             
            #ifndef _GUI_CMD_H
            #define _GUI_CMD_H
             
            class CMainFrame;
             
            class CGUICmd
            {
            }
            posted @ 2014-12-24 15:32 zhiye_wang 閱讀(462) | 評論 (0)編輯 收藏

            二 創(chuàng)建策略并設(shè)置給指定用戶
            1 打開“組策略管理”(在這里創(chuàng)建策略)
            cmd下輸入GPMC.MSC 打開組策略管理
            隨后在域上右鍵選擇“在這個(gè)域中創(chuàng)建GPO并在此處鏈接”,輸入名字“磁盤管理策略”,
            右鍵”編輯“,設(shè)置"隱藏磁盤分區(qū)(1)"中添加的策略“僅僅禁用F盤“。
            右鍵“磁盤管理策略”,勾選強(qiáng)制,勾選已啟用鏈接。
            2 關(guān)聯(lián)此GPO
            默認(rèn)情況下,GPO 影響鏈接的站點(diǎn)、域或 OU 中包含的所有用戶和計(jì)算機(jī)。
            不過,您可以在 GPO 上使用安全篩選以修改其效果:通過修改 GPO 權(quán)限僅將其應(yīng)用于特定用戶、Active Directory 安全組成員或計(jì)算機(jī)。通過將安全篩選和 OU 中的相應(yīng)位置相結(jié)合,您可以將任何一組給定的用戶或計(jì)算機(jī)作為目標(biāo)。
            要將 GPO 應(yīng)用于給定用戶、安全組或計(jì)算機(jī),該用戶、組或計(jì)算機(jī)必須具有 GPO 的“讀取”和“應(yīng)用組策略”權(quán)限。默認(rèn)情況下,“經(jīng)過身份驗(yàn)證的用戶”將“讀取”和“應(yīng)用組策略”權(quán)限設(shè)置為“允許”。這兩個(gè)權(quán)限是作為一個(gè)單位使用 GPMC 中的安全篩選進(jìn)行管理的。
            若要設(shè)置給定 GPO 的權(quán)限,以便僅將 GPO 應(yīng)用于特定用戶、安全組或計(jì)算機(jī)(而不是應(yīng)用于所有經(jīng)過身份驗(yàn)證的用戶),請?jiān)?GPMC 控制臺樹中包含該 GPO 的林和域中展開“組策略對象”。單擊該 GPO,然后在細(xì)節(jié)窗格的“作用域”選項(xiàng)卡上的“安全篩選”下面,刪除“經(jīng)過身份驗(yàn)證的用戶”,單擊“添加”,然后添加新的用戶、組或計(jì)算機(jī)。
            在”磁盤管理策略“的右側(cè)窗口中,“安全篩選”下,添加需要生效的域用戶。
            3 刷新GPO
            默認(rèn)的GPO設(shè)置不會自動刷新,只會在以下情況
            系統(tǒng)啟動時(shí)
            用戶登錄時(shí)
            間隔最長90分鐘就刷新一次,原則上是隨機(jī)的小于90分鐘的時(shí)間啟動一次。
            手動刷新GPO設(shè)置:GPUPDATE.EXE
            4 登錄查看
            用域用戶zhiye.wang登錄,查看,F(xiàn)盤已經(jīng)看不到。
            用域用戶ming.xiao登錄,查看,F(xiàn)盤依舊可以看到。
            posted @ 2014-12-23 18:00 zhiye_wang 閱讀(586) | 評論 (0)編輯 收藏

            調(diào)用API函數(shù)NetShareAdd()將文件夾設(shè)置為共享,調(diào)用此函數(shù)后如果不做其他設(shè)置,網(wǎng)絡(luò)用戶是無法訪問共享文件夾的,因?yàn)榇宋募A在NTFS分區(qū)中,同時(shí)受到NTFS文件系統(tǒng)的訪問控制,因此還需要第2步;
            調(diào)用DOS命令cacls,賦予Guest用戶組讀寫權(quán)限;
            如果要取消文件共享,直接調(diào)用API函數(shù)NetShareDel()

            對于FAT32分區(qū)中文件夾,cacls命令是不起作用的,這個(gè)命令專用于NTFS格式下的文件和文件夾。也就是說上面這種解決方法的第步不能用了,那么現(xiàn)在只能使用NetShareAdd()函數(shù)添加文件共享。調(diào)用此函數(shù)后如果不做其他設(shè)置,網(wǎng)絡(luò)用戶可以訪問共享文件夾,但擁有完全控制權(quán)限(這是默認(rèn)的共享權(quán)限設(shè)置),而在實(shí)際項(xiàng)目中我們希望能夠編程控制讀寫權(quán)限。在NTFS分區(qū)中,我們還有NTFS文件系統(tǒng)的訪問控制功能罩著,在FAT32分區(qū)中就只能依賴于操作系統(tǒng)文件夾共享自身的權(quán)限設(shè)置功能了。
             1NET_API_STATUS NetShareAdd(
             2_In_   LPWSTR servername,
             3_In_   DWORD level,
             4_In_   LPBYTE buf,
             5_Out_  LPDWORD parm_err
             6);
             7typedef struct _SHARE_INFO_2 {
             8LPWSTR shi2_netname;
             9DWORD  shi2_type;
            10LPWSTR shi2_remark;
            11DWORD  shi2_permissions;
            12DWORD  shi2_max_uses;
            13DWORD  shi2_current_uses;
            14LPWSTR shi2_path;
            15LPWSTR shi2_passwd;
            16}
             SHARE_INFO_2, *PSHARE_INFO_2, *LPSHARE_INFO_2;

            addShare.cpp

             1// 說明:
             2// FAT 系統(tǒng)調(diào)用此函數(shù),shi502_permissions參數(shù)無效。有且僅有共享權(quán)限為最高權(quán)限。
             3// NTFS 系統(tǒng)調(diào)用此函數(shù),請修改shi502_permissions參數(shù),可使用如下權(quán)限:
             4// ACCESS_READ, ACCESS_WRITE, ACCESS_CREATE, ACCESS_EXEC
             5// ACCESS_DELETE, ACCESS_ATRIB, ACCESS_PERM, ACCESS_ALL
             6BOOL addShare(LPTSTR lpShareName, LPTSTR lpShareDir)
             7{
             8NET_API_STATUS res;
             9SHARE_INFO_502 p;
            10 
            11p.shi502_netname = lpShareName; //共享名
            12p.shi502_type = STYPE_DISKTREE; 
            13p.shi502_remark = NULL;
            14p.shi502_permissions = ACCESS_ALL;
            15p.shi502_max_uses = SHI_USES_UNLIMITED; //最大鏈接數(shù)
            16p.shi502_current_uses = 0;
            17p.shi502_path = lpShareDir; //需要共享的路徑
            18p.shi502_passwd = NULL;
            19p.shi502_reserved = 0;
            20p.shi502_security_descriptor = NULL;
            21 
            22res = NetShareAdd(NULL, 502, (LPBYTE)&p, NULL);
            23 
            24if (NERR_Success == res)
            25{
            26printf("Share created.\n");
            27}

            28else
            29{
            30printf("NetShareAdd error: %u\n", res);
            31}

            32return (res==NERR_Success);
            33}

            34

            delShare.cpp
             
             1BOOL delShare(LPTSTR lpShareName)
             2{
             3    NET_API_STATUS res;
             4    //TCHAR szShareName[256] = "TestShare";
             5    //TCHAR szShreDir[256] = "F:\\Media";
             6    res = NetShareDel(NULL, (LMSTR)lpShareName, 0);
             7    if (NERR_Success == res)
             8    {
             9        printf("NetShareDel ok.\n");
            10    }

            11    else
            12    {
            13        printf("NetShareDel error: %u\n", res);
            14        if (ERROR_ACCESS_DENIED == res)
            15        {
            16            printf("The user does not have access to the requested information.\n");
            17        }

            18        if (NERR_NetNameNotFound == res)
            19        {
            20            printf("The share name does not exist.\n");
            21        }

            22    }

            23    return (res==NERR_Success);
            24}

            posted @ 2014-12-23 17:53 zhiye_wang 閱讀(291) | 評論 (0)編輯 收藏

                 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1/**//*  2 * ===============================================================...  閱讀全文
            posted @ 2014-12-23 17:47 zhiye_wang 閱讀(493) | 評論 (0)編輯 收藏

            20141129

            根據(jù)微軟http://support.microsoft.com/kb/231289 這篇文章沒有辦法解決Windows server 2008下隱藏指定盤符的問題
            這兩天搜索一些資料的總結(jié),現(xiàn)在終于解決了這個(gè)問題.詳細(xì)步驟如下

            一 首先創(chuàng)建(針對域用戶的)組策略需要的數(shù)據(jù)

            1.首先在C:\Windows\SYSVOL\sysvol\xxx.com\Policies文件夾下,創(chuàng)建文件夾PolicyDefinitions.
            2.將%systemroot%\PolicyDefinitions\下所有文件(這個(gè)目錄的文件是針對本地用戶的)復(fù)制到
            C:\Windows\SYSVOL\sysvol\xxx.com\Policies\PolicyDefinitions下.
            3.修改C:\Windows\SYSVOL\sysvol\xxx.com\Policies\PolicyDefinitions\WindowsExplorer.admx
            這個(gè)文件來達(dá)到在Windows server 2008中隱藏指定盤符的功能.
            4.在WindowsExplorer.admx文件中查找字段NoDrives,添加相應(yīng)的字符串可以設(shè)置隱藏指定的磁盤驅(qū)動器;查找字段NoViewOnDrive,并修改相應(yīng)的字段,可以設(shè)置拒絕從Windows資源管理器訪問某個(gè)磁盤驅(qū)動器.

            下面以設(shè)置隱藏指定的磁盤驅(qū)動器為例:(下列黑體字我測試時(shí)設(shè)置的"只顯示Z,其他盤符不顯示

            以下是微軟幫助中的解釋:

            這項(xiàng)策略在客戶端計(jì)算機(jī)上只顯示指定的驅(qū)動器。這項(xiàng)策略所影響的注冊表項(xiàng)使用與 26 位二進(jìn)制字符串(每一位代表一個(gè)驅(qū)動器號)相對應(yīng)的十進(jìn)制數(shù)字:

            00000000000111100000000000
            ZYXWVUTSRQPONMLKJIHGFEDCBA


            此配置對應(yīng)于十進(jìn)制數(shù)字 67108863,它會隱藏所有的驅(qū)動器。如果您要隱藏驅(qū)動器 C,將第三低位設(shè)置為 1,然后將二進(jìn)制字符串轉(zhuǎn)換為十進(jìn)制數(shù)字。

            沒有必要?jiǎng)?chuàng)建一個(gè)顯示所有驅(qū)動器的選項(xiàng),因?yàn)榍宄龔?fù)選框就完全刪除了“NoDrives”項(xiàng),所有驅(qū)動器都會自動顯示。

            如果您要配置這項(xiàng)策略以顯示一個(gè)不同的驅(qū)動器組合,請創(chuàng)建相應(yīng)的二進(jìn)制字符串,將它轉(zhuǎn)換成十進(jìn)制數(shù)字,并向 ITEMLIST 部分添加一個(gè)帶有相應(yīng)的 [strings] 項(xiàng)的新項(xiàng)。例如,要隱藏驅(qū)動器 L、M、N 和 O,請創(chuàng)建下面的字符串

            100000000000111100000000000
            2ZYXWVUTSRQPONMLKJIHGFEDCBA


            并將其轉(zhuǎn)換成十進(jìn)制。這個(gè)二進(jìn)制字符串可轉(zhuǎn)換成十進(jìn)制數(shù)字 30720

            這篇文章中的信息適用于:
            Microsoft Windows Server 2003 Standard Edition
            Microsoft Windows Server 2003 Enterprise Edition
            Microsoft Windows Server 2003 R2 Enterprise Edition (32-Bit x86)
            Microsoft Windows Server 2003 R2 Standard Edition (32-bit x86)
            Microsoft Windows 2000 Datacenter Server
            Microsoft Windows 2000 Advanced Server
            Microsoft Windows 2000 Professional Edition
            Microsoft Windows 2000 Server
            關(guān)鍵字:
            kbenv kbinfo KB231289

            5.之后修改C:\Windows\SYSVOL\sysvol\xxx.com\Policies\PolicyDefinitions\zh-CN\WindowsExplorer.adml(適用于中文Windows server 2008).

            如果你使用的是英文版需要修改:C:\Windows\SYSVOL\sysvol\xxx.com\Policies\PolicyDefinitions\en-US\WindowsExplorer.adml

            添加如下字符串.(黑體字)
            不限制z驅(qū)動器,其余驅(qū)動器全部限制

            注意:string id要跟WindowsExplorer.admx設(shè)置相同.

            6.現(xiàn)在在組策略中就可以看到這個(gè)設(shè)置了.

            ”本地組策略編輯器“->“用戶配置”→“管理模板”→Windows組件→“Windows 資源管理器”,在右側(cè)的窗格里雙擊“隱藏我的電腦中這些指定驅(qū)動器”項(xiàng),

            20141201

            2.通過注冊表隱藏硬盤分區(qū)
            關(guān)鍵值是:NoDrives
            HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\新建鍵值NoDrives,

            posted @ 2014-12-23 17:43 zhiye_wang 閱讀(567) | 評論 (0)編輯 收藏

             1 #include "stdafx.h"
             2 #include "iostream"
             3 #include "assert.h"
             4 
             5 using namespace std;
             6 
             7 int mystrcmp(const char* dest, const char* src)
             8 {
             9     assert (dest!=NULL && src!=NULL);
            10     while (*dest++ == *src++)
            11     {
            12         if (*dest=='\0' || *src=='\0')
            13             break;    
            14     }
            15     return *dest > *src ? 1 : (*dest==*src ? 0 : -1);
            16 }
            17 
            18 int main(int argc, char* argv[])
            19 {
            20     printf("Hello World!\n");
            21     cout << mystrcmp("abc", "abcd");
            22     cout << endl;
            23     return 0;
            24 }
            輸出:
            Hello World!
            -1
            Press any key to continue
            posted @ 2014-06-12 10:12 zhiye_wang 閱讀(231) | 評論 (0)編輯 收藏

             1 #include "stdafx.h"
             2 #include "iostream"
             3 #include "assert.h"
             4 #include "string"
             5 
             6 using namespace std;
             7 
             8 char* mystrcat(char* dest, const char* src)
             9 {
            10     assert(dest!=NULL && src!=NULL);
            11     char* p = dest;
            12     while (*p!='\0') 
            13         p++;
            14     while (*p++ = *src++);
            15     *p = '\0';
            16     return dest;
            17 }
            18 
            19 int main(int argc, char* argv[])
            20 {
            21     printf("Hello World!\n");
            22     char buf[10] = "FU ";
            23     char test[4] = "CK!";
            24     mystrcat(buf, test);
            25     cout << buf << endl;
            26     return 0;
            27 }
            輸出:
            Hello World!
            FU CK!
            Press any key to continue
            posted @ 2014-06-12 09:59 zhiye_wang 閱讀(213) | 評論 (0)編輯 收藏

             1 #include "stdafx.h"
             2 #include "iostream"
             3 
             4 using namespace std;
             5 
             6 int isechol (const char* str)
             7 {
             8     int length = strlen(str);
             9     for (int i=0; i<length/2; i++)
            10     {
            11         // 0代表不是,1代表是
            12         if (str[i] != str[length-i-1])
            13         {    
            14             return 0;
            15         }
            16     }
            17     return 1;
            18 }
            19 
            20 int main(int argc, char* argv[])
            21 {
            22     printf("Hello World!\n");
            23     char buf[10] = "abcddcba";
            24     if (isechol(buf))
            25         cout << buf << " is echol" << endl;
            26     else
            27         cout << buf << " is not echol" << endl;
            28     return 0;
            29 }
            輸出:
            Hello World!
            abcddcba is echol
            Press any key to continue
            posted @ 2014-06-12 09:50 zhiye_wang 閱讀(439) | 評論 (2)編輯 收藏

             1 #include "stdafx.h"
             2 #include "iostream"
             3 #include "assert.h"
             4 
             5 using namespace std;
             6 
             7 char* mystrncpy(char* dest, const char* src, int n)
             8 {
             9     assert(dest!=NULL && src!=NULL);
            10     int count = 0;
            11     while (*src != '\0')
            12     {
            13         if (count >= n)
            14         {
            15             break;
            16         }
            17         dest[count++] = *src++;
            18     }
            19     dest[count] = '\0';
            20     return dest;
            21 }
            22 
            23 int main(int argc, char* argv[])
            24 {
            25     printf("Hello World!\n");
            26     char buf[10] = {0};
            27     mystrncpy(buf, "FUCK!", 4);
            28     cout << buf << endl;
            29     return 0;
            30 }

            輸出:
            Hello World!
            FUCK!
            Press any key to continue
            posted @ 2014-06-12 09:30 zhiye_wang 閱讀(547) | 評論 (0)編輯 收藏

             1 #include "stdafx.h"
             2 #include "iostream"
             3 #include "assert.h"
             4 
             5 using namespace std;
             6 
             7 char* mystrcpy(char* dest, const char* src); // 1 const
             8 
             9 
            10 int main(int argc, char* argv[])
            11 {
            12     printf("Hello World!\n");
            13     char buf[10] = {0};
            14     mystrcpy(buf, "FUCK!");
            15     cout << buf << endl;
            16     return 0;
            17 }
            18 
            19 char* mystrcpy(char* dest, const char* src)
            20 {
            21     assert(dest!=NULL && src!=NULL);   // 2 assert
            22     char* p = dest;
            23     while (*p++ = *src++);
            24     *p = '\0';                                    // 3 字符串結(jié)束
            25     return dest;
            26 }

            輸出:
            Hello World!
            FUCK!
            Press any key to continue
            posted @ 2014-06-12 09:11 zhiye_wang 閱讀(199) | 評論 (0)編輯 收藏

            僅列出標(biāo)題
            共4頁: 1 2 3 4 
            天堂无码久久综合东京热| 亚洲国产精品久久久久网站| 久久精品国产亚洲Aⅴ蜜臀色欲| 日本精品久久久久中文字幕8| 久久精品成人欧美大片| 久久久精品国产免大香伊| 久久AV高清无码| 国产农村妇女毛片精品久久| 国内精品久久久久影院老司 | 伊人色综合久久天天| 久久狠狠一本精品综合网| 国产色综合久久无码有码| 国产激情久久久久影院老熟女| 亚洲人成精品久久久久| 久久久久无码精品| 久久成人影院精品777| 国产一区二区久久久| 狠狠久久综合| 国产精品一久久香蕉国产线看| 亚洲欧美一级久久精品| 久久精品国产91久久麻豆自制 | 久久精品国产亚洲AV无码麻豆| 成人a毛片久久免费播放| 国产三级久久久精品麻豆三级| 久久久精品国产免大香伊| 久久中文字幕无码专区| 99久久人人爽亚洲精品美女| 国产一区二区三区久久| 久久er99热精品一区二区| 国产精品99久久久久久宅男小说 | 久久久久久夜精品精品免费啦| 久久这里都是精品| 人妻无码久久精品| 亚洲第一永久AV网站久久精品男人的天堂AV| 91精品国产综合久久久久久| 久久久久亚洲AV片无码下载蜜桃| 无码人妻少妇久久中文字幕| 久久亚洲2019中文字幕| 一级女性全黄久久生活片免费| 欧美伊人久久大香线蕉综合69 | 久久99毛片免费观看不卡|