小编Chr*_*s B的帖子

C#测试用户是否具有文件夹的写入权限

我需要测试用户是否可以在实际尝试之前写入文件夹.

我已经实现了以下方法(在C#2.0中),它尝试使用Directory.GetAccessControl()方法检索文件夹的安全权限.

private bool hasWriteAccessToFolder(string folderPath)
{
    try
    {
        // Attempt to get a list of security permissions from the folder. 
        // This will raise an exception if the path is read only or do not have access to view the permissions. 
        System.Security.AccessControl.DirectorySecurity ds = Directory.GetAccessControl(folderPath);
        return true;
    }
    catch (UnauthorizedAccessException)
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在谷歌搜索如何测试写入访问时,没有出现这样的情况,实际测试Windows中的权限似乎非常复杂.我担心我过度简化了事情并且这种方法并不健全,尽管它似乎确实有效.

我的方法是否可以测试当前用户是否具有写访问权限?

c# directory permissions

179
推荐指数
11
解决办法
18万
查看次数

如何在Javascript中调用动态命名的方法?

我正在努力动态创建一些Javascript,它将在构建时插入到网页中.

Javascript将用于根据另一个列表框中的选择填充列表框.当选择一个列表框时,它将根据列表框的选定值调用方法名称.

例如:

Listbox1包含:

颜色
形状

如果选择"颜色",则会调用填充另一个列表框的"populate_Colours"方法.
澄清我的问题:如何在Javascript中进行"populate_Colours"调用?

javascript methods dynamic

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

Visual Studio 2015 Update 2团队资源管理器缺少"排除"

我一直在Visual Studio 2015的Team Explorer部分中使用Git集成.

我的解决方案中有许多配置文件需要修改才能使应用程序在本地运行但我不想提交这些更改.

在VS2015 Update 1中,Git集成的"更改"部分中有一个"排除"选项,我可以选择修改后的配置文件并将其从更改集中排除.然后,这些文件将不会出现在未来修改文件列表中,因此它们将在未来的提交中保留.

昨天我安装了Update 2,现在排除选项已经消失了.我甚至看不到'忽略'所以现在我必须手动选择修改过的文件并每次进行分段,现在这是一个额外的步骤,并且有可能让我意外地提交本地配置更改.我意识到,为即将提交的文件设置暂存区域是常态,但VS的默认设置是提交所有内容.如果我想排除配置文件,那么我需要暂存其他文件,然后提交.

有没有办法使用exclude选项取回以前的功能,或者无法忽略VS Git集成中的配置文件.我真的不想将配置文件添加到Git忽略列表中,因为有时我会合法地更改这些文件并想要提交它们.

git visual-studio team-explorer visual-studio-2015

37
推荐指数
1
解决办法
9531
查看次数

是否可以将属性网格中显示的属性标记为密码字段

我正在使用C#并且有一个包含属性网格控件的窗体.

我已将propertygrid的SelectedObject分配给设置文件,该文件显示并允许我编辑设置.但是其中一个设置是密码 - 我希望它在字段中显示星号而不是密码设置的纯文本值.

保存时该字段将被加密,但我希望它的行为类似于正常的密码输入框,当用户输入密码时会显示星号.

我想知道是否有一个属性可以应用于设置属性以将其标记为密码?

谢谢.

c# passwords propertygrid attributes

16
推荐指数
1
解决办法
6878
查看次数

TSQL - 多列上的ISNULL

我有一个简单的SQL查询(SQL Server 2005),我从一个包含多个具有BIT值的列的表中进行选择.这些列可以为空,因此可以包含NULL,0或1.

有相当数量的这些列,在我的查询中,如果值为NULL,我想返回零.我目前正在使用ISNULL:

SELECT Name, Age, ISNULL(LikesOranges,0), ISNULL(LikesApples,0), ISNULL(LikesPears,0)
FROM FoodPreferences
Run Code Online (Sandbox Code Playgroud)

正如我所提到的,有很多这些BIT专栏(远远超过上面的简单示例).有没有办法可以在多列上使用ISNULL,如下所示:

SELECT ISNULL(*,0) FROM FoodPreferences
Run Code Online (Sandbox Code Playgroud)

上面的查询不起作用,但你得到我正在尝试做的事情 - 所以我可以避免为每列写一个ISNULL语句,

谢谢.

sql t-sql sql-server-2005

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

如何使用Dapper在IN子句中使用超过2100个值?

我有一个包含ID的List,我想使用Dapper将其插入到临时表中,以避免对"IN"子句中的参数进行SQL限制.

所以目前我的代码看起来像这样:

public IList<int> LoadAnimalTypeIdsFromAnimalIds(IList<int> animalIds)
{
    using (var db = new SqlConnection(this.connectionString))
    {
        return db.Query<int>(
            @"SELECT a.animalID        
            FROM
            dbo.animalTypes [at]
            INNER JOIN animals [a] on a.animalTypeId = at.animalTypeId
            INNER JOIN edibleAnimals e on e.animalID = a.animalID
            WHERE
            at.animalId in @animalIds", new { animalIds }).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要解决的问题是,当animalIds列表中有超过2100个ID时,我得到一个SQL错误"传入的请求有太多参数.服务器最多支持2100个参数".

所以现在我想创建一个填充了传递给方法的animalIds的临时表.然后我可以加入临时表上的动物表,避免使用巨大的"IN"子句.

我尝试了各种语法组合,但没有得到任何结论.这就是我现在所处的位置:

public IList<int> LoadAnimalTypeIdsFromAnimalIds(IList<int> animalIds)
{
    using (var db = new SqlConnection(this.connectionString))
    {
        db.Execute(@"SELECT INTO #tempAnmialIds @animalIds");

        return db.Query<int>(
            @"SELECT a.animalID        
            FROM
            dbo.animalTypes [at]
            INNER JOIN animals [a] on a.animalTypeId = …
Run Code Online (Sandbox Code Playgroud)

c# sql-server dapper

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

如何使用java/vb脚本在自定义ActiveX dll中调用方法

我使用VB6创建了一个ActiveX dll,并使用打包和部署向导打包它,这导致了一个cab文件和一个演示HTML页面.

此ActiveX dll包含一个返回字符串并且不接受任何参数的simgle方法.

我遇到的麻烦是,当我调用该方法时,我总是得到一个"对象不支持此属性或方法"错误.但它支持我打电话的方法.

我想要实现的是用户访问一个网页,其中包含一些java或vb脚本,它调用我的ActiveX中的方法并获取返回的字符串值.DLL旨在被称为客户端.

我的测试网页如下:

<html>
<head>
    <title>SaveClipboardImage.CAB</title>
    <object id="Class1" classid="CLSID:" codebase="SaveClipboardImage.CAB#version=1,0,0,0"></object>
    <script type="text/javascript">
            function displaymessage()
            {
                try
                {
                var filename;

                filename = Class1.SaveClipboardToImage();

                alert(filename);
                }
                catch(e)
                {
                    alert(e.message);
                }               
            }
    </script>
</head>
<body>      
    <input type="BUTTON" onclick="displaymessage()" value="preview" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我显然做错了什么,但我不知道是什么.我是否必须在VB6项目中为类做一些特殊的事情,以便我可以访问该方法?我是否错误地调用了DLL?

谢谢你的帮助.

javascript vb6 dll vbscript activex

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

IQueryable.Distinct()vs List.Distinct()

我有一个我正在使用的linq查询Distinct().如果我只是调用Distinct()而不转换为List,那么它不会返回一个不同的列表 - 它仍然包含重复项.

但是,如果我转换为List 然后调用Distinct()- 它按预期工作,我只获得唯一的对象.

我正在使用Telerik ORM,返回的对象是表示数据库中某个表的类.

var uniqueUsers = (from u in Database.Users 
                   select u).Distinct();
Run Code Online (Sandbox Code Playgroud)

上面的代码不会产生不同的结果,但是当我转换为列表并调用distinct时 - 它确实:

var uniqueUsers = (from u in Database.Users 
                   select u).ToList().Distinct();
Run Code Online (Sandbox Code Playgroud)

我怀疑这与转换到列表之前的集合有关,比较对象的引用而不是对象数据本身但我不完全理解发生了什么 - 为什么第一个代码示例不会产生独特的结果以及会发生什么使用时的集合.ToList()使它工作?

[编辑]我已经简化了上面的查询,在现实世界中,查询有几个连接,它们会生成非唯一的结果,但是我只返回User对象.

我尝试重写EqualsGetHashCode方法,但这没有任何区别.

public override bool Equals(object obj)
{
    User comparingObject = obj as User ;

    if (comparingObject == null)
    {
        return false;
    }
    else
    {
        return comparingObject.UserID.Equals(this.UserID);
    }
}

public override int …
Run Code Online (Sandbox Code Playgroud)

c# linq iqueryable distinct telerik-open-access

4
推荐指数
1
解决办法
6053
查看次数

访问不同命名空间中的枚举

我在VS2005中使用C#.我有一个类库,其中包含许多不同项目共有的几个枚举.当访问其中一个枚举时,我必须指定枚举的整个命名空间路径,即使我已经向包含枚举的命名空间声明了"using"指令.

例如,我有以下枚举:

namespace Company.General.Project1
{
   public static class Rainbow
   {
    [Flags]
    public enum Colours
    {
      Red,
      Blue,
      Orange
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在另一个项目中:

using Company.General.Project1;

namespace Company.SpecialProject.Processing
{
  public class MixingPallette
  {
    int myValue = Company.General.Project1.Colours.Red;
  }
}
Run Code Online (Sandbox Code Playgroud)

即使我有'Using'指令引用包含枚举类的项目,我仍然需要写enum longhand. 为什么我不能做以下事情......

using Company.General.Project1;

namespace Company.SpecialProject.Processing
{
  public class MixingPallette
  {
    int myValue = Colours.Red;
  }
}
Run Code Online (Sandbox Code Playgroud)

c# enums namespaces

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

获取同一列中两行的时间跨度

我在SQL Server 2012中有一个表跟踪登录和注销时间,如下所示:

UserId    Type    InsertDate
2134      1       20120803 06:32:02.230
2134      1       20120803 10:12:24.350
2134      2       20120803 10:29:21.550
2134      2       20120803 14:10:34.220
5915      1       20120802 14:57:57.453
5915      2       20120802 16:59:00.477
Run Code Online (Sandbox Code Playgroud)

(类型1是登录,类型2是注销.)

我想查询此表 - 显示每个登录/注销对的计算出的时间跨度(以秒为单位)的用户ID的分组列表,因此我最终得到如下内容:

UserID    Duration 
2134      1017 
5915      7263
Run Code Online (Sandbox Code Playgroud)

更新:单个用户可以有多组登录/注销对,并且可能存在没有相应注销的登录.我想忽略没有相应值的登录或注销.

sql t-sql sql-server sql-server-2012

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

如果存在子节点,如何仅显示TreeView展开符号[+]

我开发了一个应用程序,它从数据库中的层次数据填充树视图.

我设计它使用延迟加载,因此它只在节点扩展时获取子节点.

我的问题是,显然我不知道节点是否有子节点,除非我调用数据库并查看.目前我已经实现了一个虚拟子节点,因此所有节点都会显示[+]图标,然后删除这个虚拟节点并获取BeforeExpand事件中的真实子节点.

这意味着我为没有子节点的节点获得了一个[+]图标,因此用户点击了展开图标,没有什么显示看起来有点粗制滥造.

在延迟加载树视图中处理子节点的preffrred方法是什么?如果我调用数据库来查看是否有子节点,那么我也可以加载子节点并忘记延迟加载吧?

我想过是储存"HasChildren"标志在数据库中,这样我就可以有选择地创建虚拟我的子节点只为实际上的节点具有子节点.

对不起,我很想知道其他人的想法......

sql database treeview lazy-loading

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

对Linq查询DataTable实施'Distinct'感到困惑

我正在尝试使用LINQ从DataTable返回一组不同的值.

这是我没有"Distinct"部分的代码,因为我正在努力制定正确的linq语句:

 DataTable gridData = RgClientData.DataSource as DataTable;
   var results = from myRow in gridData .AsEnumerable()
             select (myRow.Field<string>("AssignedUser"));
Run Code Online (Sandbox Code Playgroud)

只是在选择的末尾添加"Distinct()"不起作用.我正在努力学习语法,因为我不完全理解"Distinct"部分与Linq查询的关系.

有人能指出我正确的方向......谢谢

c# .net-4.0

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

重命名 Git 分支文件夹

我有一个带有远程分支结构的 Git 存储库,如下所示:

bugfix001 
bugfix002     
feature
    feature001
    feature002
    feature003
master
task
    task001
    task002
Run Code Online (Sandbox Code Playgroud)

其中“feature”和“task”是分支结构内的文件夹,“feature001”、“feature002”分支位于父“feature”分支文件夹下。

我的问题是 - 是否可以重命名“功能”父文件夹并将所有分支保留在其下。所以我可以将它重命名为“hamster”,结构看起来像这样

hamster
    feature001
    feature002
    feature003
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,我不是指本地文件结构,这是远程的分支结构。要在“功能”文件夹下添加一个分支,我将使用:

git checkout -b feature/feature004
Run Code Online (Sandbox Code Playgroud)

我意识到我可以单独重命名每个子分支并推送到远程,但是我可以重命名“功能”父文件夹,这将导致子分支遵循新名称吗?

git version-control

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