我有两个Active Directory域,A和B.域A中的用户需要在其桌面上运行应用程序以查看和操作位于域B中的服务器上的资源.每个用户在域B中也有一个帐户.是否可能模仿每个用户的域B身份以编程方式对域B资源执行操作?
示例工作流程:
我的应用程序需要访问远程计算机上的文件,该计算机需要用户名和密码才能访问它.
我试图找出一个目录是否存在(使用Directory.Exists)来验证我是否可以建立'连接.
在使用远程目录时,有没有办法提供用户名和密码?目前Exists返回false.
干杯,
我很难找到一个非常具体的用例来工作.有问题的应用程序有两个组件:Windows服务,需要在桌面外的特权上下文中运行(即,在用户登录时是否接受连接)和客户端Winforms应用程序.该服务接受websocket连接,如果连接请求成功,则应该以交互方式(进入桌面)登录用户,并以具有桌面访问权限的用户生成进程.我使用了以下链接,虽然他们能够冒充用户,但他们实际上并没有将用户登录到桌面,即如果我使用VNC观看系统,或者我在本地系统上测试它,用户没有登录.但是,该过程会以用户身份生成,但显然不是桌面访问.
有没有人有一个代码示例,将用户登录到桌面?
我试过的链接和代码:
使用Process.Start()以Windows服务中的不同用户身份启动进程
目前的代码是:
using Cassia;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.DirectoryServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Security.Principal;
using System.ServiceProcess;
namespace program
{
public partial class service
{
#region Interop
[StructLayout(LayoutKind.Sequential)]
public struct LUID
{
public UInt32 LowPart;
public Int32 HighPart;
}
[StructLayout(LayoutKind.Sequential)]
public struct LUID_AND_ATTRIBUTES
{
public LUID Luid;
public UInt32 Attributes;
}
public struct TOKEN_PRIVILEGES
{
public UInt32 PrivilegeCount;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
public LUID_AND_ATTRIBUTES[] Privileges; …Run Code Online (Sandbox Code Playgroud) 我需要使用C#模拟用户.我使用LogonUser Win32 API.当模拟与当前登录用户相同的域中的用户时,此方法可以正常工作.但是,当我尝试冒充其他域中的用户时,我会收到"false"作为响应.
是什么导致这个?
我使用 Visual Studio 2015 在 C# 中开发了一个应用程序,该应用程序通常将一些文件从一个目录(源)复制到另一个目录(目标)。我的问题是源路径是域中的另一台计算机。我希望能够访问该目录并获取我的文件、用户域、源计算机的用户名和密码。我已经看到了一些解决方案,但我无法了解他们如何访问另一台计算机。我曾经通过使用目录来获取我的文件。GetDirectories(路径),我现在使用它太深了,无法将其更改为平滑。感谢您帮助我解决我的问题,我现在确实被封锁了好几天。
string[] folder1;
string[] folder2;
folder1 = Directory.GetDirectories(path);
foreach (string fld1 in folder1)
{
folder2 = Directory.GetDirectories(fld);
foreach(string fld2 in folder2)
{
for(int i = 0; i < MyList.Count(); i++)
{
if(fld2.Contains("nok") || fld2.Contains("Nok"))
LNok = Directory.GetFiles(fld2, picList[i]);
else
Lok = Directory.GetFiles(fld2, picList[i]);
}
}
}Run Code Online (Sandbox Code Playgroud)
c# ×4
.net ×1
cross-domain ×1
directory ×1
filesystems ×1
networking ×1
service ×1
winapi ×1
windows ×1