小编Sql*_*yan的帖子

当我使用DirectoryServices"member"属性时,"Domain Users"组为空

我正在使用以下代码来获取我的域中组的成员:

  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工具中正确列出了所有人.我有什么明显的遗漏吗?另外,有没有更好的方法来获得一个团体的所有成员?

vb.net directoryservices active-directory

8
推荐指数
1
解决办法
4795
查看次数

在vb.net中以不同用户身份运行新进程

我目前正在使用一种自行开发的方法在Vista中以不同的用户身份运行一个进程,我无法摆脱那种黑客攻击并且不太理想的感觉(除了它摧毁了UAC,崩溃了我的事实)有安全例外的应用程序,并强制我完全禁用UAC).我的进程包含两个项目(所以两个EXE文件) - 一个"接口"和一个"启动存根" - 这里是过程:

  1. 用户有一个启动"Interface.exe notepad.exe"的快捷方式
  2. Interface.exe有一个表单,要求他们使用他们想要的凭据
  3. Interace.exe使用ProcessStartInfo以新用户身份创建LaunchStub.exe(LS)的实例
  4. LS使用ProcessStartInfo(ShellExecute设置为true)来启动所请求的文件,并且因为它已经作为请求的用户运行,所以新进程也是如此.

我有一个两步过程的原因是我希望用户能够右键单击操作系统具有(.EXE,.SQL,.MSC等)默认操作的任何文件并启动它,并且仅限ProcessStartInfo支持启用"UseShellExecute",但该开关阻止我使用新凭据,所以我一次只能做一个.

这会导致一些问题 - 首先,用户必须已经存在于计算机上,这意味着他们必须先在本地登录.如果该用户没有本地配置文件,则所请求的应用程序有时会启动,但我得到注册表和配置文件例外,因为应用程序期望存在尚未存在的事物(如注册表中的HKCU配置单元,用户不会因为他们从未登录过.

我知道我应该能够将我的应用程序的权限"提升"给他们请求的用户,启动我的新进程,然后撤消提升,但我无法找到一个好的代码示例,并且我不确定它是否允许以完全不同的用户身份运行.这一切都有意义吗?我不禁觉得有更好的方法来做到这一点.


更新:我刚尝试了一些我在网上发现的模拟代码,但无济于事.当与ProcessStartInfo一起使用时,它似乎仍然使用我当前的登录启动进程,而不是我提供的进程,即使我已使用提供的凭据激活模拟.

vb.net impersonation runas startprocessinfo security-context

7
推荐指数
1
解决办法
3万
查看次数

确定是否已附加事件

我有两个对象 - 一个包含将触发事件的代码,另一个包含该事件的处理程序.我不能在第一个对象的Load中使用"AddHandler",因为第二个对象的实例尚不存在.当我举起我的事件时,我想检查一下object2的副本是否已被实例化(易于操作),以及是否已将事件附加到事件(不知道如何执行此操作).

我也接受另一个关于如何做到这一点的建议.如果我在Object1.Load中执行我的AddHandler,并且Object2尚不存在,那么它将永远不会处理我的事件,即使我稍后创建它也是如此.现在,在触发事件的代码中,我只是在每次引发事件时都使用了一个RemoveHandler然后是一个AddHandler,然后我知道当对象最终存在时我会附加,但我知道这个是一种糟糕的方法.

我看到一篇关于类似内容的文章(确定绑定到事件的事件处理程序列表),也许我在翻译中遗漏了一些内容,但是我无法让代码在VB.NET中处理我的自定义事件.

vb.net events event-handling

7
推荐指数
2
解决办法
1万
查看次数

如何在.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)

.net c# file-io

7
推荐指数
1
解决办法
1813
查看次数

将尾随空格插入SQL Server VARCHAR列

我正在尝试将尾随空格插入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 t-sql sql-server string sql-server-2008

7
推荐指数
1
解决办法
5371
查看次数

在SQL中将DateTime转换为"n Hours Ago"的最佳方法

我编写了一个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)

sql datetime function

6
推荐指数
1
解决办法
1万
查看次数

在Windows资源管理器中添加"虚假驱动器"

我使用的应用程序Mozy Backup将自己的"驱动器"添加到Windows资源管理器中,我可以浏览并查看我备份的所有文件.Windows知道它不是物理驱动器 - 如果我的驱动器列表按类型划分,它会显示在"其他"下.

如何在浏览器中注册这样的"驱动器"?我想用我正在开发的当前.NET应用程序来做这件事,但是我找不到任何关于它是如何完成的解释.此外,我似乎无法找到任何关于使我的应用程序"可浏览"的文档,这意味着它提供了一个类似的界面,用户可以浏览文件夹和文件.

这是我正在谈论的截图:
Mozy驱动器的示例

.net windows-explorer windows-explorer-integration

6
推荐指数
1
解决办法
511
查看次数

用于选择SQL Server并获取登录详细信息的通用对话框?

我的应用程序需要询问用户什么SQL Server连接到和使用什么凭据连接,我在想,如果有一个对话框,在那里,有人已经建立 - 就像自带框架的OpenFileDialog功能(在你.显示它,然后你可以问它选择了哪个文件),但看起来像SQL Management Studio的登录框.

理想情况下,我会.显示对话框,然后一旦完成,我就可以获得一个.ConnectionString属性,该属性返回与他们选择的所有细节相关联的字符串.

如果一旦不存在,我想启动该进程来创建它,因为我想这将是有帮助的人们刚好能放下一个表格上,并有得到来自用户的照顾一个数据库连接.

.net sql-server common-dialog visual-studio

6
推荐指数
1
解决办法
1237
查看次数

一旦调试开始,Visual Studio就会从应用程序中分离出来

我有一个Web应用程序,我一直能够在Visual Studio中运行它调试很好(断点工作,我可以暂停执行等).最近,行为突然改变了,发生了一些事情:

  • 我开始调试,它推出IE并加载应用程序,但几秒钟后(有时页面还没有显示),Visual Studio就好像调试已停止 - 我能够再次在VS中编辑代码,并且工具栏上的"播放"按钮已启用.应用程序继续在刚刚生成的IE窗口中运行,但我并不依赖它
  • 在这几秒钟内VS正在"调试",因为它分离了,我的断点显示为空洞 - 好像我已经设置为"释放"模式并且它们不会被击中.实际上,我在Page_Load中设置了一个断点,它会跳过它.我已经检查了,我已经设置为调试模式,虽然工具栏中缺少编译模式下拉列表(我检查了构建属性以确保我处于调试模式).

有人可以在这里说清楚吗?

debugging uac windows-vista visual-studio windows-8.1

5
推荐指数
1
解决办法
5264
查看次数

按计划将SQL Server数据从一台服务器复制到另一台服务器

我在不同的webhosts上有一对SQL Server,我正在寻找一种方法来定期使用另一台服务器更新一台服务器.这是我正在寻找的:

  1. 尽可能自动化 - 理想情况下,一旦设置完成,我就不会参与其中.
  2. 将一些数据库完全(包括任何架构更改)从一台服务器推送到另一台服务器
  3. 自由地允许在源服务器上进行更改而不会破坏我的进程.出于这个原因,我不想使用复制,因为每次有源更新时我都必须打破它,然后重新创建发布和订阅
  4. 一个数据库大小约为4GB,包含二进制数据.我不确定是否有办法将其导出到脚本中,但如果我这样做,那将是一个庞大的文件.

最初,我正在考虑编写一些需要对每个数据库进行计划完全备份的内容,将备份从一台服务器FTP到另一台服务器,然后新服务器选择并恢复它.我能看到的唯一缺点是,在开始传输备份之前无法知道备份是否完成 - 这些备份是否可以同步完成?此外,正在刷新的服务器是我们的测试服务器,因此如果移动数据涉及一些停机时间,那很好.

有没有人有更好的想法,或者我正在考虑最好的非复制方式?感谢大家的帮助.

更新: 我最终设计了一个自定义解决方案,使用BAT文件,7Zip,命令行FTP和OSQL完成此操作,因此它以完全自动的方式运行,并聚合来自全国十几个服务器的数据.我详细介绍了博客条目中的步骤.

感谢您的输入!

sql-server replication sql-server-2005

5
推荐指数
1
解决办法
1万
查看次数