青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

c++修改文件(夾)的用戶訪問權限程序代碼

一般Windows下的系統文件(夾)只讓受限帳戶讀取而不讓寫入和修改。如果要開啟寫操作權限就需要手動修改文件(夾)的用戶帳戶安全權限(這操作當然要在管理員帳戶下執行).以下用程序封裝了一下該操作:

  先來個API版本:

  //

  // 啟用某個賬戶對某個文件(夾)的所有操作權限

  // pszPath: 文件(夾)路徑

  // pszAccount: 賬戶名稱

  //

  BOOL  EnableFileAccountPrivilege (PCTSTR pszPath, PCTSTR pszAccount)

  {

  BOOL bSuccess = TRUE;

  PACL pNewDacl = NULL, pOldDacl = NULL;

  EXPLICIT_ACCESS ea;

  do

  {

  // 獲取文件(夾)安全對象的DACL列表

  if (ERROR_SUCCESS != ::GetNamedSecurityInfo ((LPTSTR)pszPath, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDacl, NULL, NULL))

  {

  bSuccess  =  FALSE;

  break;

  }

  // 此處不可直接用AddAccessAllowedAce函數,因為已有的DACL長度是固定,必須重新創建一個DACL對象

  // 生成指定用戶帳戶的訪問控制信息(這里指定賦予全部的訪問權限)

  ::BuildExplicitAccessWithName (&ea, (LPTSTR)pszAccount, GENERIC_ALL, GRANT_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT);

  // 創建新的ACL對象(合并已有的ACL對象和剛生成的用戶帳戶訪問控制信息)

  if (ERROR_SUCCESS != ::SetEntriesInAcl(1, &ea, pOldDacl, &pNewDacl))

  {

  bSuccess   =  FALSE;

  break;

  }[next]

  // 設置文件(夾)安全對象的DACL列表

  if (ERROR_SUCCESS != ::SetNamedSecurityInfo ((LPTSTR)pszPath, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pNewDacl, NULL))

  {

  bSuccess   =  FALSE;

  }

  } while (FALSE);

  // 釋放資源

  if (pNewDacl != NULL)

  ::LocalFree(pNewDacl);

  return bSuccess;

  }ATL封裝了安全操作函數,用ATL來寫就簡單多了: //

  // 啟用某個賬戶對某個文件(夾)的所有操作權限(ATL版本)

  // pszPath: 文件(夾)路徑

  // pszAccount: 賬戶名稱

  //

  BOOL  AtlEnableFileAccountPrivilege (PCTSTR pszPath, PCTSTR pszAccount)

  {

  CDacl  dacl;

  CSid   sid;

  // 獲取用戶帳戶標志符

  if (!sid.LoadAccount (pszAccount))

  {

  return FALSE;

  }

  // 獲取文件(夾)的DACL

  if (!AtlGetDacl (pszPath, SE_FILE_OBJECT, &dacl))

  {

  return FALSE;

  }

  // 在DACL中添加新的ACE項

  dacl.AddAllowedAce (sid, GENERIC_ALL);

  // 設置文件(夾)的DACL

  return AtlSetDacl (pszPath, SE_FILE_OBJECT, dacl) ? TRUE : FALSE;

  }

來源:http://www.uniuc.com/computer/show-6322-1.html\\\



通過程序對文件夾的訪問權限進行控制。
BOOL   My_SetFolderSecurity(WCHAR*   szPath)
{
SID_IDENTIFIER_AUTHORITY   sia   =   SECURITY_NT_AUTHORITY;
PSID   pSidSystem   =   NULL;
PSID   pSidAdmins   =   NULL;
PSID   pSidWorld   =   NULL;
PACL   pDacl   =   NULL;
EXPLICIT_ACCESS   ea[4];
SECURITY_DESCRIPTOR   SecDesc;

ULONG   lRes   =   ERROR_SUCCESS;

__try
{
//   create   SYSTEM   SID
if   (!AllocateAndInitializeSid(&sia,   1,   SECURITY_LOCAL_SYSTEM_RID,
0,   0,   0,   0,   0,   0,   0,   &pSidSystem))
{
lRes   =   GetLastError();
__leave;
}

//   create   Local   Administrators   alias   SID
if   (!AllocateAndInitializeSid(&sia,   2,   SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,   0,   0,   0,   0,  
0,   0,   &pSidAdmins))
{
lRes   =   GetLastError();
__leave;
}


//   create   Authenticated   users   well-known   group   SID
if   (!AllocateAndInitializeSid(&sia,   1,   SECURITY_AUTHENTICATED_USER_RID,
0,   0,   0,   0,   0,   0,   0,   &pSidWorld))
{
lRes   =   GetLastError();
__leave;
}

//   fill   an   entry   for   the   SYSTEM   account
ea[0].grfAccessMode   =   GRANT_ACCESS;
ea[0].grfAccessPermissions   =   FILE_ALL_ACCESS;
ea[0].grfInheritance   =   OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE;
ea[0].Trustee.MultipleTrusteeOperation   =   NO_MULTIPLE_TRUSTEE;
ea[0].Trustee.pMultipleTrustee   =   NULL;
ea[0].Trustee.TrusteeForm   =   TRUSTEE_IS_SID;
ea[0].Trustee.TrusteeType   =   TRUSTEE_IS_WELL_KNOWN_GROUP;
ea[0].Trustee.ptstrName   =   (LPTSTR)pSidSystem;

//   fill   an   entry   entries   for   the   Administrators   alias
ea[1].grfAccessMode   =   GRANT_ACCESS;
ea[1].grfAccessPermissions   =   FILE_ALL_ACCESS;
ea[1].grfInheritance   =   OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE;
ea[1].Trustee.MultipleTrusteeOperation   =   NO_MULTIPLE_TRUSTEE;
ea[1].Trustee.pMultipleTrustee   =   NULL;
ea[1].Trustee.TrusteeForm   =   TRUSTEE_IS_SID;
ea[1].Trustee.TrusteeType   =   TRUSTEE_IS_ALIAS;
ea[1].Trustee.ptstrName   =   (LPTSTR)pSidAdmins;

//   fill   an   entry   for   the   Authenticated   users   well-known   group
ea[2].grfAccessMode   =   GRANT_ACCESS;
ea[2].grfAccessPermissions   =   FILE_GENERIC_READ|FILE_GENERIC_WRITE   ;
ea[2].grfInheritance   =   OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE;
ea[2].Trustee.MultipleTrusteeOperation   =   NO_MULTIPLE_TRUSTEE;
ea[2].Trustee.pMultipleTrustee   =   NULL;
ea[2].Trustee.TrusteeForm   =   TRUSTEE_IS_SID;
ea[2].Trustee.TrusteeType   =   TRUSTEE_IS_WELL_KNOWN_GROUP;
ea[2].Trustee.ptstrName   =   (LPTSTR)pSidWorld;


//   create   a   DACL
lRes   =   SetEntriesInAcl(3,   ea,   NULL,   &pDacl);
if   (lRes   !=   ERROR_SUCCESS)
__leave;

//   initialize   security   descriptor
if(!InitializeSecurityDescriptor(&SecDesc,   SECURITY_DESCRIPTOR_REVISION))
__leave   ;

if(!SetSecurityDescriptorDacl(&SecDesc,   TRUE,   pDacl,   FALSE))
__leave   ;

//   assign   security   descriptor   to   the   key
//lRes   =   RegSetKeySecurity(hKey,   DACL_SECURITY_INFORMATION,   &SecDesc);

lRes   =   SR_SetFileSecurityRecursive(szPath,   DACL_SECURITY_INFORMATION,   &SecDesc);
//lRes   =   SetFileSecurity(szPath,   DACL_SECURITY_INFORMATION,   &SecDesc);


}
__finally
{
if   (pSidSystem   !=   NULL)
FreeSid(pSidSystem);
if   (pSidAdmins   !=   NULL)
FreeSid(pSidAdmins);
if   (pSidWorld   !=   NULL)
FreeSid(pSidWorld);
if   (pDacl   !=   NULL)
LocalFree((HLOCAL)pDacl);
}

SetLastError(lRes);
return   lRes   !=   ERROR_SUCCESS;
}  


Command   what   is   yours
Conquer   what   is   not

==========================================================
我解決了,在MSDN里找到的
(取自MSDN)

#define   _WIN32_WINNT   0x0500

#include   <windows.h>
#include   <sddl.h>
#include   <stdio.h>

BOOL   CreateMyDACL(SECURITY_ATTRIBUTES   *);

void   main()
{
SECURITY_ATTRIBUTES     sa;

sa.nLength   =   sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle   =   FALSE;    

//   Call   function   to   set   the   DACL.   The   DACL
//   is   set   in   the   SECURITY_ATTRIBUTES  
//   lpSecurityDescriptor   member.
if   (!CreateMyDACL(&sa))
{
//   Error   encountered;   generate   message   and   exit.
printf( "Failed   CreateMyDACL\n ");
exit(1);
}

//   Use   the   updated   SECURITY_ATTRIBUTES   to   specify
//   security   attributes   for   securable   objects.
//   This   example   uses   security   attributes   during
//   creation   of   a   new   directory.
if   (0   ==   CreateDirectory(TEXT( "C:\\MyFolder "),   &sa))
{
//   Error   encountered;   generate   message   and   exit.
printf( "Failed   CreateDirectory\n ");
exit(1);
}

//   Free   the   memory   allocated   for   the   SECURITY_DESCRIPTOR.
if   (NULL   !=   LocalFree(sa.lpSecurityDescriptor))
{
//   Error   encountered;   generate   message   and   exit.
printf( "Failed   LocalFree\n ");
exit(1);
}
}

BOOL   CreateMyDACL(SECURITY_ATTRIBUTES   *   pSA)
{
TCHAR   *   szSD   =   TEXT( "D: ")               //   Discretionary   ACL
TEXT( "(D;OICI;GA;;;BG) ")           //   Deny   access   to   built-in   guests
TEXT( "(D;OICI;GA;;;AN) ")           //   Deny   access   to   anonymous   logon
TEXT( "(A;OICI;GRGWGX;;;AU) ")   //   Allow   read/write/execute   to   authenticated   users
TEXT( "(A;OICI;GA;;;BA) ");         //   Allow   full   control   to   administrators

if   (NULL   ==   pSA)
return   FALSE;

return   ConvertStringSecurityDescriptorToSecurityDescriptor(
szSD,
SDDL_REVISION_1,
&(pSA-> lpSecurityDescriptor),
NULL);
}

posted on 2011-08-23 13:02 wrh 閱讀(7963) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲美女网站| 亚洲第一福利社区| 久久久久久黄| 欧美在线免费一级片| 欧美在线视频网站| 亚洲精品日本| 亚洲特色特黄| 久久久久久网站| 蜜臀a∨国产成人精品| 欧美成人精品1314www| 国产精品二区三区四区| 亚洲欧美综合精品久久成人| 亚洲麻豆国产自偷在线| 免费观看成人| 久久久久综合网| 久久九九国产精品| 久久久久久久999精品视频| 欧美在线地址| 亚洲第一福利在线观看| 亚洲香蕉伊综合在人在线视看| 99在线热播精品免费99热| 日韩亚洲视频| 久久夜精品va视频免费观看| 欧美福利电影网| 99在线热播精品免费99热| 久久久久久亚洲精品杨幂换脸 | 亚洲深夜福利在线| 亚洲欧美精品中文字幕在线| 久久久噜噜噜久久狠狠50岁| 亚洲黄色av| 香蕉久久夜色| 欧美视频观看一区| 18成人免费观看视频| 亚洲综合好骚| 亚洲韩国一区二区三区| 久久riav二区三区| 欧美婷婷久久| 亚洲精品国产品国语在线app| 欧美一区二区免费| 99国产麻豆精品| 麻豆成人小视频| 韩国成人福利片在线播放| 亚洲欧美一区二区三区久久| 亚洲精品影视| 欧美jjzz| 亚洲人成人99网站| 牛牛影视久久网| 久久成人精品无人区| 国产嫩草一区二区三区在线观看| 亚洲精品久久嫩草网站秘色| 久久久噜噜噜久久中文字幕色伊伊| 99国内精品久久| 欧美激情第一页xxx| 亚洲国产精品成人综合色在线婷婷| 久久婷婷蜜乳一本欲蜜臀| 亚洲欧美影音先锋| 国产精品美女久久久久久免费| 一本色道久久综合亚洲精品不卡| 欧美成人dvd在线视频| 久久久蜜桃精品| 在线免费精品视频| 国产一区二区黄色| 欧美亚洲一级片| 亚洲专区国产精品| 免费在线观看精品| 欧美一区激情| 狠狠噜噜久久| 麻豆成人在线观看| 久热re这里精品视频在线6| 亚洲国产日韩欧美在线99 | 亚洲欧美在线aaa| 快播亚洲色图| 欧美日韩亚洲高清一区二区| 亚洲精品欧美| 亚洲人成网站色ww在线| 欧美xart系列高清| 一区二区欧美精品| 亚洲一区久久| 国产一区二区在线免费观看 | 欧美高清一区| 99re66热这里只有精品4| 亚洲精品日日夜夜| 国产精品乱人伦中文| 欧美一区二区视频网站| 久久成人免费| 一区二区免费在线观看| 老司机精品视频网站| 亚洲理论在线观看| 欧美在线视频一区二区三区| 欧美亚洲自偷自偷| 最新国产成人av网站网址麻豆 | 国产精品日韩在线播放| 欧美一级黄色网| 欧美亚洲一区二区在线| 亚洲电影免费在线观看| 亚洲精品在线看| 国产又爽又黄的激情精品视频| 欧美国产一区二区| 欧美午夜视频一区二区| 久久精品av麻豆的观看方式| 欧美成黄导航| 久久久久久电影| 欧美先锋影音| 欧美激情在线狂野欧美精品| 国产精品视频成人| 亚洲经典三级| 激情一区二区三区| 中文国产一区| 亚洲精品一区二区三区在线观看| 性欧美8khd高清极品| 一区二区三区鲁丝不卡| 另类激情亚洲| 久久久久久久综合狠狠综合| 欧美日韩在线亚洲一区蜜芽| 欧美阿v一级看视频| 国产视频一区欧美| 亚洲图片自拍偷拍| 亚洲精品视频一区二区三区| 午夜精品一区二区三区在线播放| 99在线|亚洲一区二区| 久久精品国产久精国产思思| 亚洲欧美在线网| 欧美三区视频| 999亚洲国产精| 亚洲黄色成人| 久久性色av| 久久综合中文色婷婷| 国产一区二区0| 欧美在线播放一区| 久久精品视频在线| 欧美日韩免费高清一区色橹橹| 国产精品成人一区二区网站软件| 亚洲无线一线二线三线区别av| 国产精品爽爽ⅴa在线观看| 久久蜜桃精品| 欧美日韩国产影院| 久久一日本道色综合久久| 欧美日韩卡一卡二| 亚洲日本成人网| 1769国产精品| 亚洲电影免费观看高清完整版在线| 欧美日韩亚洲一区三区 | 欧美激情女人20p| 蜜桃av噜噜一区| 久久精品欧美日韩| 久久国产一区二区| 精久久久久久| 国产精品视频男人的天堂| 欧美精品一区二区三区高清aⅴ| 一本色道久久99精品综合| 欧美国产日韩在线| 在线观看视频一区| 红桃视频欧美| 国产欧美一区二区精品仙草咪 | 日韩亚洲欧美成人一区| 久久九九免费| 久久久久综合| 久久亚洲私人国产精品va| 日韩视频一区二区三区| 玖玖视频精品| 亚洲国产精品小视频| 欧美亚洲免费电影| 久久久成人精品| 亚洲国语精品自产拍在线观看| 亚洲精品欧美激情| 亚洲一区在线观看免费观看电影高清| 一区二区成人精品| 欧美一区二区免费视频| 久久精品中文字幕一区| 激情小说亚洲一区| 91久久午夜| 性色av一区二区怡红| 久久久久久久久久久久久女国产乱| 91久久极品少妇xxxxⅹ软件| 亚洲一区三区电影在线观看| 欧美一区二区三区日韩视频| 亚洲日本中文字幕| 翔田千里一区二区| 欧美日韩亚洲一区二区三区在线| 国产日韩欧美精品综合| 欧美一区二区在线免费观看| 久久久噜噜噜| 亚洲福利视频网| 亚洲欧美在线一区二区| 久久久亚洲综合| 国产嫩草影院久久久久| 中文日韩电影网站| 欧美韩日一区| 欧美小视频在线观看| 久久精品盗摄| 老司机精品视频一区二区三区| 国产日产高清欧美一区二区三区| 亚洲欧美日韩成人高清在线一区| 亚洲视屏在线播放| 国产精品高潮呻吟久久| 亚洲三级免费电影| 欧美亚洲一区| 亚洲欧美中文另类| 欧美午夜a级限制福利片| 亚洲图片欧洲图片av|