我需要访问网络路径

本文关键字:网络 路径 访问 | 更新日期: 2023-09-27 17:54:10

我有一个windows服务,并试图使用pinvoke来映射它。代码在控制台应用程序中运行良好,但在windows服务中不起作用。根据这个:

"净use"命令

我应该放弃网络使用方法,而是给予适当的特权,以便我的服务可以访问UNC路径('server'share'file-path)。如何设置这些特权?我想应该在某个地方设置基本的Windows特权。如有任何帮助,不胜感激。

[DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern System.UInt32 NetUseAdd(string UncServerName, int Level, ref USE_INFO_2 Buf, out uint ParmError);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
internal struct USE_INFO_2
{
    internal LPWSTR ui2_local;
    internal LPWSTR ui2_remote;
    internal LPWSTR ui2_password;
    internal DWORD ui2_status;
    internal DWORD ui2_asg_type;
    internal DWORD ui2_refcount;
    internal DWORD ui2_usecount;
    internal LPWSTR ui2_username;
    internal LPWSTR ui2_domainname;
}

       static void Main()
        {
            USE_INFO_2 useInfo = new USE_INFO_2();
            useInfo.ui2_remote = @"''xx.xx.xx.xx'E$"; // "''xx.xx.xx.xx'E$"
            useInfo.ui2_password = "********";
            useInfo.ui2_asg_type = 0;    //disk drive
            useInfo.ui2_usecount = 1;
            useInfo.ui2_username = "Admin";
            useInfo.ui2_domainname = "rendering";
            uint paramErrorIndex;
            uint returnCode = NetUseAdd(String.Empty, 2, ref useInfo, out paramErrorIndex);
            if (returnCode != 0)
            {
                throw new Win32Exception((int)returnCode);
            }
...

我需要访问网络路径

您可以作为具有此路径访问权限的域/Windows用户启动Windows服务。