1

管理者ユーザーのみが書き込み/読み取りできる共有フォルダーを作成しようとしています。

これは私が持っているものです:

 NET_API_STATUS res;
 SHARE_INFO_2 p;
 DWORD parm_err = 0;

      // Fill in the SHARE_INFO_2 structure.
      //

      p.shi2_netname = TEXT("QueuesSHAREDTest");    
      p.shi2_type = STYPE_DISKTREE; // disk drive
      p.shi2_remark = TEXT("TESTSHARE to test Queues Folders");
      p.shi2_permissions = 0;    
      p.shi2_max_uses = -1;
      p.shi2_current_uses = 0;    
      p.shi2_path = TEXT(Path);
      p.shi2_passwd = NULL; // no password
      //
      // Call the NetShareAdd function,
      //  specifying level 2.
      //
      res=NetShareAdd(NULL, 2, (LPBYTE) &p, &parm_err);
      //
      // If the call succeeds, inform the user.
      //
      if(res==0)
         printf("Share created.\n");

      // Otherwise, print an error,
      //  and identify the parameter in error.
      //
      else
         printf("Error: %u\tparmerr=%u\n", res, parm_err);

共有権限のオプションが見つかりません。これにより、書き込み/読み取り/実行...許可を設定することしかできません。

以前にこれを行った人はいますか?

4

1 に答える 1

0

共有に DACL (随意アクセス制御リスト) を設定することで、共有にアクセスできるユーザーを制御します。

これを行うには、 を呼び出しGetNamedSecurityInfoてオブジェクトの現在のアクセス許可を取得し、次に DACL を変更してから、 を呼び出しSetNamedSecurityInfoて変更された DACL を共有に関連付けます。

または、情報レベル 503で呼び出しNetShareGetInfoて現在のセキュリティ記述子を取得し、DACL を変更してから、情報レベル 1501で呼び出して、変更されたセキュリティ記述子を共有に関連付けることもできます。NetShareSetInfo

ただし、それ以外のことを行う十分な理由がないので、Get/SetNamedSecurityInfo を使用します。DACL を操作するのはかなり面倒です。これ以上難しいことを追加する必要はありません。

于 2013-07-16T15:28:39.453 に答える