小编Cha*_*lie的帖子

有没有办法让win2k8计划任务具有正常的优先级IO?

我有一个非常IO密集的计划任务(删除数十万个文件).出于磁盘空间原因,必须快速执行此作业.在win2k8上,计划任务的IO优先级始终较低.提高流程的优先级并未改变IO优先级.有没有办法让计划任务具有正常的IO优先级?

scheduled-tasks windows-server-2008

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

为什么C#限制可以声明为const的类型集?

编译器错误CS0283表示只能将基本POD类型(以及字符串,枚举和空引用)声明为const.有没有人有关于这种限制的理由的理论?例如,能够声明其他类型的const值(例如IntPtr)会很好.

我相信这个概念const实际上是C#中的语法糖,它只是用文字值替换了名称的任何用法.例如,给定以下声明,在编译时对Foo的任何引用都将替换为"foo".

const string Foo = "foo";
Run Code Online (Sandbox Code Playgroud)

这将排除任何可变类型,因此他们可能选择此限制而不必在编译时确定给定类型是否可变?

c# compiler-errors constants

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

如何在Windows上为C++程序设置正确的初始区域设置?

我对本地化编程很新,我正在试图弄清楚如何为新启动的非托管C++应用程序(从应用程序内部)设置正确的初始区域设置.

据我所知,新的应用程序从C语言环境开始,而不是从适当的区域语言环境(英语,德语等)开始.所以我需要做的是调用setlocale( LC_ALL, "???" ),但我不确定如何为第二个参数获取正确的值.它将类似于"英语"或"德语:德国" - 基本上是用户通过"区域和语言选项"控制面板设置的区域设置.为了清楚起见,我不是在寻找如何格式化语言环境字符串,我正在为运行应用程序的计算机寻找正确的语言环境字符串.

我猜测有一些Win32 API会给我这个,或者可能是一个包含正确值的注册表项.有人知道我应该做什么吗?

c++ windows locale localization

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

如何指定表单打开时应该关注哪个控件?

无论何时打开表单,系统都会自动为您控制其中一个控件.据我所知,根据Windows标准行为,获得焦点的控件是Tab键顺序中的第一个启用控件.

问题是如何在运行时更改此功能,而无需动态重新调整Tab键顺序.例如,某些表单可能希望根据程序逻辑改变最初聚焦的控件,以便将焦点放在最合适的控件中.如果您只是将其他控件集中在OnLoad处理程序中,则默认逻辑仍会执行并重新聚焦默认控件.

如果您使用C/C++编写并使用原始窗口过程或MFC,则可以FALSEWM_INITDIALOG处理程序返回0(),并跳过默认的聚焦逻辑.但是,我无法在Windows窗体中找到任何方法.我提出的最好的方法是BeginInvokeOnLoad完成后设置焦点,如下所示:

protected override void OnLoad( System.EventArgs e )
{
    base.OnLoad( e );
    // ... code ...
    BeginInvoke( new MethodInvoker( () => this.someControl.Focus() ) );
}
Run Code Online (Sandbox Code Playgroud)

必须有一些正确的方法来做到这一点 - 它是什么?

.net winforms

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

如何在将PowerShell数组传递给函数时展开它

我有两个PowerShell函数,第一个调用第二个函数.它们都带有N个参数,其中一个被定义为简单地添加一个标志并调用另一个.以下是示例定义:

function inner
{
  foreach( $arg in $args )
    {
      # do some stuff
    }
}

function outer
{
  inner --flag $args
}
Run Code Online (Sandbox Code Playgroud)

用法看起来像这样:

inner foo bar baz
Run Code Online (Sandbox Code Playgroud)

或这个

outer wibble wobble wubble
Run Code Online (Sandbox Code Playgroud)

目标是后一个例子等同于

inner --flag wibble wobble wubble
Run Code Online (Sandbox Code Playgroud)

问题:inner如此处所定义,后者实际上导致传递两个参数:第一个是"--flag",第二个是包含"wibble","wobble"和"wubble"的数组.我想要的是inner接收四个参数:标志和三个原始参数.

所以我想知道的是如何说服powershell在传递它之前扩展$ args数组inner,将其作为N个元素而不是单个数组传递.我相信你可以使用splatting运算符(*字符)在Ruby中执行此操作,我很确定PowerShell可以做到这一点,但我不记得如何.

arrays powershell

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

如何从Powershell访问COM对象的索引属性

我正在使用Powershell通过任务调度程序2.0接口(例如ITaskDefinition)通过COM与Windows 7任务调度程序服务进行通信.我想从ITaskDefinition上的Triggers集合中提取一个特定的触发器.似乎提取特定触发器的正确​​方法是通过Item属性,它是一个索引属性.

我的第一次尝试看起来像这样:

$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$folder = $sched.GetFolder('\')
$task = $folder.GetTask("some task")
$triggers = $task.Definition.Triggers
$trigger = $triggers[0]
Run Code Online (Sandbox Code Playgroud)

但是,最后一行失败并显示以下消息:

Unable to index into an object of type System.__ComObject.
Run Code Online (Sandbox Code Playgroud)

我在这个主题上尝试过其他一些变化,例如$triggers.Item(0),一切都没有运气.我猜这与$trigger作为COM对象有关,因为我认为索引属性在其他类型上运行良好.

有谁知道这样做的正确方法?

com powershell

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

仅提供移动构造函数是不好的形式?

我想Foo从函数返回一个不可复制的类型对象.这基本上是一个辅助对象,调用者将使用它来执行一组操作,析构函数在操作完成后执行一些清理.

rvalue引用出现之前,我会返回一个shared_ptr<Foo>或类似的东西.使用rvalue引用,另一个选项是使构造函数和复制构造函数成为私有,并使唯一的公共构造函数成为移动构造函数.Foo看起来像这样:

class Foo : boost::noncopyable
{
private:
    Foo( /* whatever the real ctor needs */ );

public:
    Foo( Foo && src );

    // ... interesting stuff ...
};

Foo a( SomethingThatReturnsFoo() ); // allowed
Foo b;      // error, no public default constructor
Foo c( a ); // error, noncopyable
Foo d = a;  // error, noncopyable
Run Code Online (Sandbox Code Playgroud)

我的问题是,这样做是否不好,或者看起来是否合理.我想不出有什么理由会导致问题或者难以阅读,但是当涉及到rvalue引用时,我仍然是一个新手,所以可能会考虑我没想到的.

c++ rvalue-reference move-constructor move-semantics c++11

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

如何正确调用LsaLogonUser进行交互式登录?

我正在尝试使用LsaLogonUser创建交互式登录会话,但它始终返回STATUS_INVALID_INFO_CLASS(0xc0000003).从我在网上搜索中发现,KERB_INTERACTIVE_LOGON结构的内存布局很棘手,但我很确定我已经做到了.

我也尝试使用MSV1.0而不是Kerberos,MSV1_0_INTERACTIVE_LOGON用于身份验证结构和MSV1_0_PACKAGE_NAME包名称,但是失败了STATUS_BAD_VALIDATION_CLASS(0xc00000a7).

谁能告诉我这里做错了什么?这是代码,大部分错误处理都被剥离了.显然,这不是生产质量; 我只想尝试一个工作样本.


// see below for definitions of these
size_t wcsByteLen( const wchar_t* str );
void InitUnicodeString( UNICODE_STRING& str, const wchar_t* value, BYTE* buffer, size_t& offset );

int main( int argc, char * argv[] )
{
    // connect to the LSA
    HANDLE lsa;
    LsaConnectUntrusted( &lsa );

    const wchar_t* domain = L"mydomain";
    const wchar_t* user = L"someuser";
    const wchar_t* password = L"scaryplaintextpassword";

    // prepare the authentication info
    ULONG authInfoSize …
Run Code Online (Sandbox Code Playgroud)

windows windows-security local-security-authority

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

sys.database_permissions 何时会包含状态 = 'R' 的行?

所述用于MSDN文档sys.database_permissions说,状态栏可以是“G”,“d”,“R”,或“W”。'R' 值有一个 'REVOKE' 的描述,这听起来像是具有该值的行对应于已撤销的权限。然而,尽我可以告诉的文档的REVOKE,撤销权限完全删除它,所以我希望这只是从删除行sys.database_permissions。这就是我测试授予然后撤销许可时发生的情况;在GRANT该权限显示在该视图中之后,以及在REVOKE它消失之后。

我的问题:在什么情况下这个视图会包含状态设置为“R”的行?我问这个是因为我不确定在代码中检查这个视图时是否需要处理“R”行。

我可以想到一些可能发生这种情况的潜在场景,但还没有找到任何确认:

  • 如果您授予了一些全面的权限,然后撤销了全面权限所隐含的更细化的权限(细化权限将显示为“R”),则可能会出现“R”行。到目前为止,我还没有找到任何此类权限。
  • 'R' 行在 SQL 处理REVOKE命令时可能会非常短暂地出现,然后整行消失。我没有观察到这一点,但大概只有一个很小的时间窗口才会出现。

sql sql-server permissions database-permissions

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

关于size_t和offset_t用法的指导原则?

这可能是一个C++ 101问题:我很好奇的准则是使用size_toffset_t,如他们的目的是什么情况了,什么情况下,他们不打算等我没有做很多便携式编程的,所以我也通常只是用类似intunsigned int数组大小,索引等.但是,我认为最好在可能的情况下使用其中一些更标准的typedef,所以我想知道如何正确地做到这一点.

作为后续问题,对于使用Visual Studio 2008在Windows上进行开发,我应该在哪里查找实际的typedef?我发现size_t在VS安装目录中的多个头文件中定义了,所以我不确定我应该使用哪些头文件,而且我找不到offset_t任何地方.

c++

4
推荐指数
2
解决办法
5588
查看次数