小编Moo*_*ose的帖子

模拟时获取当前用户名

我使用类似下面的方法来模拟我的代码中的用户:

你如何在.NET中进行模拟?

在另一个类中,我需要找出当前用户(如"mydomain\moose"),但我不知道我是否正在冒充其他用户.

如果我冒充某人,我如何获得用户名?

System.Environment.UserName和System.Security.Principal.WindowsIdentity.GetCurrent().Name都返回原始用户,而不是当前模拟的用户.

更多细节:

我正在进行此模拟,以便我可以访问用户通常无权访问的netowrk共享中的某些文件.

如果我使用登录类型的LOGON32_LOGON_INTERACTIVE,我确实看到了新用户,但我无法访问网络共享.如果我使用登录类型的LOGON32_LOGON_NEW_CREDENTIALS(值为9),我可以访问网络共享但我没有在Environment.UserName中看到新用户.

.net c#

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

如何更新表中的n行?

我需要更新符合条件的表中的前N行.

我知道我可以做一个更新前N ...但问题是N在@variable中.

更新顶部@N SET ...不起作用.

有没有办法做到这一点,我只是失踪?

这里没有特定的表定义,因为列是什么并不重要.如果我可以为一个列表执行此操作,我可以为我的表执行此操作.

sql sql-server sql-server-2005

8
推荐指数
2
解决办法
9951
查看次数

我可以在svn中保留CruiseControl.Net的ccnet.config,然后在检查更改时让CruiseControl更新自己的配置文件吗?

我希望能够在svn中保留我们的CruiseControl.Net的ccnet.config文件,然后当我检查更改时,即我添加了一个新项目,它将自行更新.

这样我在源代码管理下有配置文件,我可以跟踪正在进行的更改.

我确实意识到我可以检查一个将CruiseControl搞砸到我必须进行一些手动干预的更改,但在一般情况下,这听起来很好用.

然而,这个循环似乎可能会造成黑洞并摧毁世界.如果可能的话,我想保持这种良心.

有什么想法吗?

svn cruisecontrol.net ccnet-config

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

尝试捕获用户定义函数?

我正在尝试编写UDF以将字符串或与该guid相关联的项目代码转换为guid:

CREATE FUNCTION fn_user_GetProjectID 
(
    @Project nvarchar(50)
)
RETURNS uniqueidentifier
AS
BEGIN

    declare @ProjectID uniqueidentifier

    BEGIN TRY
        set @ProjectID = cast(@Project as uniqueidentifier)
    END TRY
    BEGIN CATCH
        set @ProjectID = null
    END CATCH

    if(@ProjectID is null)
    BEGIN
        select  @ProjectID = ProjectID from Project where projectcode = @Project
    END

    return @ProjectID

END
Run Code Online (Sandbox Code Playgroud)

如果上面的代码已嵌入到我的存储过程中,则可以正常工作,但是我想从中创建一个函数,以便我遵循DRY。

当我尝试创建函数时,出现如下错误:

Msg 443, Level 16, State 14, Procedure fn_user_GetProjectID, Line 16
Invalid use of side-effecting or time-dependent operator in 'BEGIN TRY' within a function.
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何解决这个错误?

编辑:我知道我不能在函数中使用Try-Catch,我想这是一个简化的问题,有没有一种方法可以进行转换,如果转换失败,它只会返回NULL而不是错误?

t-sql user-defined-functions

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