mirror of https://github.com/dahall/Vanara.git
220 lines
11 KiB
C#
220 lines
11 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Vanara.PInvoke
|
|
{
|
|
public static partial class Shell32
|
|
{
|
|
/// <summary>Values that specify the folder being acted on by methods of the ISharingConfigurationManager interface.</summary>
|
|
/// <remarks>
|
|
/// <para>
|
|
/// In Windows Vista, an Server Message Block (SMB) share is created for both the <c>Users</c> and <c>Public</c> folders. As of
|
|
/// Windows 7, the Public share is accessed through the Users share, so only <c>Users</c> is given an SMB share.
|
|
/// </para>
|
|
/// <para>
|
|
/// When methods are called with the <c>DEFSHAREID_PUBLIC</c> value, the restrictions specified by the SHARE_ROLE value in that call
|
|
/// apply to the Everyone access control entry (ACE).
|
|
/// </para>
|
|
/// <para>
|
|
/// When methods are called with the <c>DEFSHAREID_USERS</c> value, the restrictions specified by the SHARE_ROLE value in that call
|
|
/// apply to the Authenticated Users ACE.
|
|
/// </para>
|
|
/// </remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/ne-shobjidl_core-def_share_id typedef enum DEF_SHARE_ID {
|
|
// DEFSHAREID_USERS, DEFSHAREID_PUBLIC } ;
|
|
[PInvokeData("shobjidl_core.h", MSDNShortId = "NE:shobjidl_core.DEF_SHARE_ID")]
|
|
public enum DEF_SHARE_ID
|
|
{
|
|
/// <summary>The Users folder (FOLDERID_UserProfiles). This folder is usually found at C:\Users.</summary>
|
|
DEFSHAREID_USERS = 1,
|
|
|
|
/// <summary>The Public folder (FOLDERID_Public). This folder is usually found at C:\Users\Public.</summary>
|
|
DEFSHAREID_PUBLIC,
|
|
}
|
|
|
|
/// <summary>Specifies the access permissions assigned to the <c>Users</c> or <c>Public</c> folder. Used in CreateShare and GetSharePermissions.</summary>
|
|
/// <remarks>
|
|
/// ISharingConfigurationManager::CreateShare accepts only <c>SHARE_ROLE_READER</c> and <c>SHARE_ROLE_CO_OWNER</c>. All other values
|
|
/// are seen only in the results of ISharingConfigurationManager::GetSharePermissions.
|
|
/// </remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/ne-shobjidl_core-share_role typedef enum SHARE_ROLE {
|
|
// SHARE_ROLE_INVALID, SHARE_ROLE_READER, SHARE_ROLE_CONTRIBUTOR, SHARE_ROLE_CO_OWNER, SHARE_ROLE_OWNER, SHARE_ROLE_CUSTOM,
|
|
// SHARE_ROLE_MIXED } ;
|
|
[PInvokeData("shobjidl_core.h", MSDNShortId = "NE:shobjidl_core.SHARE_ROLE")]
|
|
// public enum SHARE_ROLE{SHARE_ROLE_INVALID, SHARE_ROLE_READER, SHARE_ROLE_CONTRIBUTOR, SHARE_ROLE_CO_OWNER, SHARE_ROLE_OWNER,
|
|
// SHARE_ROLE_CUSTOM, SHARE_ROLE_MIXED, }
|
|
public enum SHARE_ROLE
|
|
{
|
|
/// <summary>The folder is not shared.</summary>
|
|
SHARE_ROLE_INVALID = -1,
|
|
|
|
/// <summary>The contents of the folder can be read, but not altered or added to.</summary>
|
|
SHARE_ROLE_READER,
|
|
|
|
/// <summary>
|
|
/// The contents of the folder can be read and altered. New items can be added, however items can be deleted only by the user
|
|
/// that contributed them.
|
|
/// </summary>
|
|
SHARE_ROLE_CONTRIBUTOR,
|
|
|
|
/// <summary>The contents of the folder can be read, changed, or added to.</summary>
|
|
SHARE_ROLE_CO_OWNER,
|
|
|
|
/// <summary>Not normally used in the context of this interface.</summary>
|
|
SHARE_ROLE_OWNER,
|
|
|
|
/// <summary>The folder is shared, but the share role is neither SHARE_ROLE_READER, SHARE_ROLE_CONTRIBUTOR, or SHARE_ROLE_CO_OWNER.</summary>
|
|
SHARE_ROLE_CUSTOM,
|
|
|
|
/// <summary>Not used in the context of this interface.</summary>
|
|
SHARE_ROLE_MIXED,
|
|
}
|
|
|
|
/// <summary>
|
|
/// Exposes methods that set and retrieve information about a computer's default sharing settings for the <c>Users</c> () or
|
|
/// <c>Public</c> () folder. Also exposes a set of methods that allow control of printer sharing.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// <para>When to Implement</para>
|
|
/// <para>
|
|
/// An implementation of this interface is included in the <c>CSharingConfiguration</c> class. Third parties do not provide their
|
|
/// own implementation.
|
|
/// </para>
|
|
/// </remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-isharingconfigurationmanager
|
|
[PInvokeData("shobjidl_core.h", MSDNShortId = "NN:shobjidl_core.ISharingConfigurationManager")]
|
|
[ComImport, Guid("B4CD448A-9C86-4466-9201-2E62105B87AE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), CoClass(typeof(SharingConfigurationManager))]
|
|
public interface ISharingConfigurationManager
|
|
{
|
|
/// <summary>
|
|
/// Shares the <c>Users</c> or <c>Public</c> folder. If the folder is already shared, this method updates its sharing status.
|
|
/// </summary>
|
|
/// <param name="dsid">
|
|
/// <para>Type: <c>DEF_SHARE_ID</c></para>
|
|
/// <para>One of the DEF_SHARE_ID values that indicates the folder to share or update.</para>
|
|
/// </param>
|
|
/// <param name="role">
|
|
/// <para>Type: <c>SHARE_ROLE</c></para>
|
|
/// <para>
|
|
/// One of the following SHARE_ROLE values that sets the access permissions of the share for the Everyone ACE.
|
|
/// <c>CreateShare</c> accepts only these values.
|
|
/// </para>
|
|
/// <para>SHARE_ROLE_READER (0)</para>
|
|
/// <para>Read-only. The contents of the folder can be read, but not altered or added to.</para>
|
|
/// <para>SHARE_ROLE_CO_OWNER (2)</para>
|
|
/// <para>Read/Write. The contents of the folder can be read, changed, or added to.</para>
|
|
/// </param>
|
|
/// <remarks>
|
|
/// <para>Running this method requires an Administrator privilege level.</para>
|
|
/// <para>
|
|
/// If the folder named in dsid is not shared, this method shares the folder using the permission level provided in the role parameter.
|
|
/// </para>
|
|
/// <para>
|
|
/// If the folder named in dsid is already shared, this method updates the permissions on the share with the value provided in
|
|
/// the role parameter.
|
|
/// </para>
|
|
/// <para>
|
|
/// Because as of Windows 7 the <c>Public</c> folder is shared through <c>Users</c> rather than directly, creating a share on
|
|
/// <c>Public</c> causes an Server Message Block (SMB) share to be created on <c>Users</c>.
|
|
/// </para>
|
|
/// </remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-isharingconfigurationmanager-createshare
|
|
// HRESULT CreateShare( DEF_SHARE_ID dsid, SHARE_ROLE role );
|
|
void CreateShare(DEF_SHARE_ID dsid, SHARE_ROLE role);
|
|
|
|
/// <summary>Removes sharing from either the <c>Users</c> or <c>Public</c> folder.</summary>
|
|
/// <param name="dsid">
|
|
/// <para>Type: <c>DEF_SHARE_ID</c></para>
|
|
/// <para>One of the DEF_SHARE_ID values that specifies the folder to no longer share.</para>
|
|
/// </param>
|
|
/// <remarks>Running this method requires an Administrator privilege level.</remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-isharingconfigurationmanager-deleteshare
|
|
// HRESULT DeleteShare( DEF_SHARE_ID dsid );
|
|
void DeleteShare(DEF_SHARE_ID dsid);
|
|
|
|
/// <summary>Queries whether the <c>Users</c> or <c>Public</c> folder is shared.</summary>
|
|
/// <param name="dsid">
|
|
/// <para>Type: <c>DEF_SHARE_ID</c></para>
|
|
/// <para>One of the DEF_SHARE_ID values that indicates the folder whose sharing state is being checked.</para>
|
|
/// </param>
|
|
/// <returns>
|
|
/// <para>Type: <c>HRESULT</c></para>
|
|
/// <para>S_OK if the folder is shared; otherwise, S_FALSE.</para>
|
|
/// </returns>
|
|
/// <remarks>
|
|
/// Because as of Windows 7 <c>Public</c> is shared in-place through <c>Users</c>, callers should always check for the Users
|
|
/// share first. If a share is found to exist on <c>Users</c>, then it follows that a share exists on <c>Public</c> as well.
|
|
/// </remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-isharingconfigurationmanager-shareexists
|
|
// HRESULT ShareExists( DEF_SHARE_ID dsid );
|
|
[PreserveSig]
|
|
HRESULT ShareExists(DEF_SHARE_ID dsid);
|
|
|
|
/// <summary>
|
|
/// Gets the access permissions currently associated with the <c>User</c> or <c>Public</c> folder for the Everyone access
|
|
/// control entry (ACE).
|
|
/// </summary>
|
|
/// <param name="dsid">
|
|
/// <para>Type: <c>DEF_SHARE_ID</c></para>
|
|
/// <para>One of the DEF_SHARE_ID values that specifies the folder.</para>
|
|
/// </param>
|
|
/// <returns>
|
|
/// <para>Type: <c>SHARE_ROLE*</c></para>
|
|
/// <para>
|
|
/// A pointer to a value that, when this method returns successfully, receives one of the SHARE_ROLE values that indicate the
|
|
/// sharing permissions set for the folder specified in the dsid parameter.
|
|
/// </para>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-isharingconfigurationmanager-getsharepermissions
|
|
// HRESULT GetSharePermissions( DEF_SHARE_ID dsid, SHARE_ROLE *pRole );
|
|
SHARE_ROLE GetSharePermissions(DEF_SHARE_ID dsid);
|
|
|
|
/// <summary>
|
|
/// Shares all local printers connected to a computer, enabling them to be discovered by other computers on the network.
|
|
/// </summary>
|
|
/// <remarks>Running this method requires an Administrator privilege level.</remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-isharingconfigurationmanager-shareprinters
|
|
// HRESULT SharePrinters();
|
|
void SharePrinters();
|
|
|
|
/// <summary>Stops sharing all local, shared printers connected to a computer.</summary>
|
|
/// <remarks>Running this method requires an Administrator privilege level.</remarks>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-isharingconfigurationmanager-stopsharingprinters
|
|
// HRESULT StopSharingPrinters();
|
|
void StopSharingPrinters();
|
|
|
|
/// <summary>Determines whether any printers connected to this computer are shared.</summary>
|
|
/// <returns>
|
|
/// <para>Type: <c>HRESULT</c></para>
|
|
/// <para>Returns standard HRESULT values, including the following:</para>
|
|
/// <list type="table">
|
|
/// <listheader>
|
|
/// <term>Return code</term>
|
|
/// <term>Description</term>
|
|
/// </listheader>
|
|
/// <item>
|
|
/// <term>S_OK</term>
|
|
/// <term>Shared printers were detected.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term>S_FALSE</term>
|
|
/// <term>No shared printers were found.</term>
|
|
/// </item>
|
|
/// <item>
|
|
/// <term>ERROR_FILE_NOT_FOUND</term>
|
|
/// <term>No printers capable of being shared were found.</term>
|
|
/// </item>
|
|
/// </list>
|
|
/// </returns>
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-isharingconfigurationmanager-areprintersshared
|
|
// HRESULT ArePrintersShared();
|
|
[PreserveSig]
|
|
HRESULT ArePrintersShared();
|
|
}
|
|
|
|
/// <summary>CLSID_SharingConfigurationManager</summary>
|
|
[PInvokeData("shobjidl_core.h", MSDNShortId = "NN:shobjidl_core.ISharingConfigurationManager")]
|
|
[ComImport, Guid("49F371E1-8C5C-4d9c-9A3B-54A6827F513C"), ClassInterface(ClassInterfaceType.None)]
|
|
public class SharingConfigurationManager { }
|
|
}
|
|
} |