我正在使用以下代码来获取我的域中组的成员:
Dim de As New DirectoryEntry("LDAP://" & GroupDN)
For Each user As String In CType(de.Properties("member"), IEnumerable)
GroupCollection.Add(Username, Username)
Next
Run Code Online (Sandbox Code Playgroud)
我的问题是,当GroupDN(组的可分辨名称)是" CN = Domain Users,CN = Users,DC = Mydomain,DC = local "时,For ... Each循环不执行,当我检查时手动使用属性语句,它的计数为零.这似乎适用于我的域中的每个其他组,但"域用户"组应该包含所有人,并且它似乎包含任何人.
我已经检查过,该组在我的Windows AD工具中正确列出了所有人.我有什么明显的遗漏吗?另外,有没有更好的方法来获得一个团体的所有成员?
我目前正在使用一种自行开发的方法在Vista中以不同的用户身份运行一个进程,我无法摆脱那种黑客攻击并且不太理想的感觉(除了它摧毁了UAC,崩溃了我的事实)有安全例外的应用程序,并强制我完全禁用UAC).我的进程包含两个项目(所以两个EXE文件) - 一个"接口"和一个"启动存根" - 这里是过程:
我有一个两步过程的原因是我希望用户能够右键单击操作系统具有(.EXE,.SQL,.MSC等)默认操作的任何文件并启动它,并且仅限ProcessStartInfo支持启用"UseShellExecute",但该开关阻止我使用新凭据,所以我一次只能做一个.
这会导致一些问题 - 首先,用户必须已经存在于计算机上,这意味着他们必须先在本地登录.如果该用户没有本地配置文件,则所请求的应用程序有时会启动,但我得到注册表和配置文件例外,因为应用程序期望存在尚未存在的事物(如注册表中的HKCU配置单元,用户不会因为他们从未登录过.
我知道我应该能够将我的应用程序的权限"提升"给他们请求的用户,启动我的新进程,然后撤消提升,但我无法找到一个好的代码示例,并且我不确定它是否允许以完全不同的用户身份运行.这一切都有意义吗?我不禁觉得有更好的方法来做到这一点.
更新:我刚尝试了一些我在网上发现的模拟代码,但无济于事.当与ProcessStartInfo一起使用时,它似乎仍然使用我当前的登录启动进程,而不是我提供的进程,即使我已使用提供的凭据激活模拟.
vb.net impersonation runas startprocessinfo security-context
我有两个对象 - 一个包含将触发事件的代码,另一个包含该事件的处理程序.我不能在第一个对象的Load中使用"AddHandler",因为第二个对象的实例尚不存在.当我举起我的事件时,我想检查一下object2的副本是否已被实例化(易于操作),以及是否已将事件附加到事件(不知道如何执行此操作).
我也接受另一个关于如何做到这一点的建议.如果我在Object1.Load中执行我的AddHandler,并且Object2尚不存在,那么它将永远不会处理我的事件,即使我稍后创建它也是如此.现在,在触发事件的代码中,我只是在每次引发事件时都使用了一个RemoveHandler然后是一个AddHandler,然后我知道当对象最终存在时我会附加,但我知道这个是一种糟糕的方法.
我看到一篇关于类似内容的文章(确定绑定到事件的事件处理程序列表),也许我在翻译中遗漏了一些内容,但是我无法让代码在VB.NET中处理我的自定义事件.
是否有可能从大文件的中间有效地插入或删除字节,如果是这样的话?或者我是否在插入或删除数据之后重写整个文件?
[A lot of Bytes][Unwanted Bytes][A lot of Bytes] - > [A lot of Bytes][A lot of Bytes]
or
[A lot of Bytes][A lot of Bytes] - > [A lot of Bytes][New Inserted Bytes][A lot of Bytes]
Run Code Online (Sandbox Code Playgroud) 我正在尝试将尾随空格插入VARCHAR(50)列,并且SQL插入似乎正在将它们删除.这是我的代码:
create table #temp (field varchar(10));
insert into #temp select ' ';
select LEN(field) from #temp;
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会返回零长度,这意味着''被插入为''.我需要为此专栏插入一个空白区域 - 任何想法?
我编写了一个SQL函数来将SQL中的日期时间值转换为更友好的"n Hours Ago"或"n Days Ago"等类型的消息.我想知道是否有更好的方法来做到这一点.
(是的,我知道"不要在SQL中这样做",但出于设计原因,我必须这样做).
这是我写的函数:
CREATE FUNCTION dbo.GetFriendlyDateTimeValue
(
@CompareDate DateTime
)
RETURNS nvarchar(48)
AS
BEGIN
DECLARE @Now DateTime
DECLARE @Hours int
DECLARE @Suff nvarchar(256)
DECLARE @Found bit
SET @Found = 0
SET @Now = getDate()
SET @Hours = DATEDIFF(MI, @CompareDate, @Now)/60
IF @Hours <= 1
BEGIN
SET @Suff = 'Just Now'
SET @Found = 1
RETURN @Suff
END
IF @Hours < 24
BEGIN
SET @Suff = ' Hours Ago'
SET @Found = 1
END
IF @Hours >= …Run Code Online (Sandbox Code Playgroud) 我使用的应用程序Mozy Backup将自己的"驱动器"添加到Windows资源管理器中,我可以浏览并查看我备份的所有文件.Windows知道它不是物理驱动器 - 如果我的驱动器列表按类型划分,它会显示在"其他"下.
如何在浏览器中注册这样的"驱动器"?我想用我正在开发的当前.NET应用程序来做这件事,但是我找不到任何关于它是如何完成的解释.此外,我似乎无法找到任何关于使我的应用程序"可浏览"的文档,这意味着它提供了一个类似的界面,用户可以浏览文件夹和文件.
这是我正在谈论的截图:
Mozy驱动器的示例
我的应用程序需要询问用户什么SQL Server连接到和使用什么凭据连接,我在想,如果有一个对话框,在那里,有人已经建立 - 就像自带框架的OpenFileDialog功能(在你.显示它,然后你可以问它选择了哪个文件),但看起来像SQL Management Studio的登录框.
理想情况下,我会.显示对话框,然后一旦完成,我就可以获得一个.ConnectionString属性,该属性返回与他们选择的所有细节相关联的字符串.
如果一旦不存在,我想启动该进程来创建它,因为我想这将是有帮助的人们刚好能放下一个表格上,并有得到来自用户的照顾一个数据库连接.
我有一个Web应用程序,我一直能够在Visual Studio中运行它调试很好(断点工作,我可以暂停执行等).最近,行为突然改变了,发生了一些事情:
有人可以在这里说清楚吗?
我在不同的webhosts上有一对SQL Server,我正在寻找一种方法来定期使用另一台服务器更新一台服务器.这是我正在寻找的:
最初,我正在考虑编写一些需要对每个数据库进行计划完全备份的内容,将备份从一台服务器FTP到另一台服务器,然后新服务器选择并恢复它.我能看到的唯一缺点是,在开始传输备份之前无法知道备份是否完成 - 这些备份是否可以同步完成?此外,正在刷新的服务器是我们的测试服务器,因此如果移动数据涉及一些停机时间,那很好.
有没有人有更好的想法,或者我正在考虑最好的非复制方式?感谢大家的帮助.
更新: 我最终设计了一个自定义解决方案,使用BAT文件,7Zip,命令行FTP和OSQL完成此操作,因此它以完全自动的方式运行,并聚合来自全国十几个服务器的数据.我详细介绍了博客条目中的步骤.
感谢您的输入!
.net ×3
sql-server ×3
vb.net ×3
sql ×2
c# ×1
datetime ×1
debugging ×1
events ×1
file-io ×1
function ×1
replication ×1
runas ×1
string ×1
t-sql ×1
uac ×1
windows-8.1 ×1