【问题标题】:Sharing Folder API共享文件夹 API
【发布时间】:2015-06-02 16:06:56
【问题描述】:

我有 C# WinForm 应用程序,需要为某个文件夹设置共享权限,并指定哪些用户具有读/写/删除权限。 我想知道是否有任何 api 或方法可以调用类似于右键单击文件夹选择属性/共享/高级共享并打开窗口时的内容。

如果您知道从 c# 调用此窗口,如果您分享您的知识,我将不胜感激。 我想调用这个窗口。

【问题讨论】:

  • 您是在问是否可以显示此对话框供用户交互,或者如何在代码中实现对话框功能?
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。

标签: c# .net winforms winapi shared-directory


【解决方案1】:

此任务没有任何标准 API。

试试这个项目来实现你所需要的How to Share Windows Folders Using C#(这里还有另一个例子https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/de213b61-dc7e-4f33-acdb-893aa96837fa/c-set-directory-sharing-permission-full-control-for-everyone-programmatically-in-windows-7-or?forum=windowssdk

请注意,您的应用程序需要以管理员权限运行才能共享文件夹。

【讨论】:

    【解决方案2】:

    你可以通过 Win32 API 做到这一点:

    private static void QshareFolder(string FolderPath, string ShareName, string Description)
        {
            try
            {
                // Create a ManagementClass object
                ManagementClass managementClass = new ManagementClass("Win32_Share");
    
                // Create ManagementBaseObjects for in and out parameters
                ManagementBaseObject inParams = managementClass.GetMethodParameters("Create");
                ManagementBaseObject outParams;
    
                // Set the input parameters
                inParams["Description"] = Description;
                inParams["Name"] = ShareName;
                inParams["Path"] = FolderPath;
                inParams["Type"] = 0x0; // Disk Drive
    
                // Invoke the method on the ManagementClass object
                outParams = managementClass.InvokeMethod("Create", inParams, null);
                if ((uint)(outParams.Properties["ReturnValue"].Value) != 0)
                {
                    throw new Exception("Unable to share directory.");
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message, "error!");
            }
        }
    

    用法: QshareFolder("c:\TestShare", "Test Share", "This is a Test Share");

    来源:http://www.codeproject.com/Articles/18624/How-to-Share-Windows-Folders-Using-C

    【讨论】:

    • 至少清理一下代码,去掉所有多余的空格。
    • 感谢您的回复。我无法使用 QShareFolder 为特定用户设置权限。如果可能,我想在高级共享文件夹中调用构建。如果它已经存在,为什么要重新发明轮子。
    • @Farukh 看看vbforums.com/… 并可能使用converter.telerik.com 转换代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2022-06-30
    • 2018-10-31
    • 2016-07-31
    • 2020-09-14
    • 1970-01-01
    相关资源
    最近更新 更多