小编Cur*_*ous的帖子

命名空间语义差异

我看到大多数类型.NET framework分布在3个不同的命名空间(可能更多),一个开头,另一个开头Microsoft,System第三个开头Windows.

例如,有Windows.System.Threading.ThreadPoolSystem.Threading.ThreadPool.

Is there a clear cut semantic difference on this design?

.net c# namespaces

15
推荐指数
2
解决办法
290
查看次数

将BYTE*转换为Array <byte> ^

是否可以在C++/CX中将byte*转换为Array ^?

目前我通过复制每个值来实现这一点,我知道这不是空间/性能效率.

我目前的实施是:

Array<byte>^ arr = ref new Array<byte>(byteCount);
for (int i = 0; i < byteCount; i++)
{
    arr[i] = *(bytes + i);
}
Run Code Online (Sandbox Code Playgroud)

c++-cx

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

Windows服务的ResumeAutomatic和ResumeSuspend模式之间的区别

根据MSDN文档

ResumeAutomatic:计算机已自动唤醒以处理事件.

注意:如果系统在广播ResumeAutomatic后检测到任何用户活动,它将广播ResumeSuspend事件,让应用程序知道他们可以恢复与用户的完全交互.

ResumeSuspend:系统暂停后恢复运行.

这是否意味着当计算机从睡眠状态唤醒时调用"ResumeAutomatic"并在用户输入凭据后登录时调用"ResumeSuspend"?

我正在使用tcp套接字与服务器通信.因此,为了在系统从休眠状态恢复时重新连接到服务,我有以下代码

    protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
    {
        Logger.Log("Power status is : " + powerStatus);
        if (powerStatus == PowerBroadcastStatus.ResumeAutomatic)
        {
            ConnectionWatchdog.ReConnect();
        }
        return base.OnPowerEvent(powerStatus);
    }
Run Code Online (Sandbox Code Playgroud)

但我观察到枚举值是随机的.以下是3种不同唤醒时间的3种不同痕迹.

20150525#094449 ::电源状态为:暂停

20150525#094716 ::电源状态为:ResumeSuspend


20150525#103431 ::电源状态为:暂停

20150525#103525 ::电源状态为:ResumeSuspend

20150525#103525 ::电源状态为:ResumeAutomatic


20150525#103558 ::电源状态为:暂停

20150525#103835 ::电源状态为:ResumeAutomatic

.net c# windows-services

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

不使用安全桌面的 UIAccess 和 Elevation

我正在编写一个类似于 VNC 的远程桌面软件,并希望通过利用 UIAccess 权限和安全策略提供的功能来捕获 UAC 提示。

理论:

根据下面给出的 MSDN 博客,您需要将“安全设置\本地策略\安全选项\允许 UIAccess 应用程序在不使用安全桌面的情况下提示提升”属性设置为“启用”,以允许具有“UIAccess”权限的应用程序使“UAC 提示”显示在用户交互式桌面上,而不是安全桌面上。

https://blogs.msdn.microsoft.com/cjacks/2009/01/08/helpdesk-elevation-on-windows-vista-and-windows-7/

https://blogs.msdn.microsoft.com/cjacks/2009/10/15/using-the-uiaccess-attribute-of-requestedexecutionlevel-to-improve-applications-providing-remote-control-of-the-desktop/

https://blogs.msdn.microsoft.com/asklar/2012/03/14/remote-assistance-and-uac-prompts/

观察: 我用下面给出的代码编写了一个程序。

static void Main()
{
    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p.StartInfo.UseShellExecute = true;
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.Verb = "runas";
    p.Start();
}
Run Code Online (Sandbox Code Playgroud)

然后我将以下内容添加到 app.manifest

<requestedExecutionLevel  level="asInvoker" uiAccess="true" />
Run Code Online (Sandbox Code Playgroud)

然后我按照MSDN 论坛说明对应用程序进行了自签名。

然后我手动将程序复制到 Program Files (x86) 文件夹中的子文件夹中。

然后我启用了“允许 UIAccess 应用程序在不使用安全桌面的情况下提示提升”安全策略。

当我运行该程序时(在生成证书的同一系统中),我希望在用户的交互式桌面中显示 UAC 提示。但即使调用它的应用程序具有 UIAccess 权限,它仍然在“安全桌面”中运行。

可能出了什么问题?

.net windows uac local-security-policy

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

编译器如何使用postfix运算符处理return语句?

有人可以解释下面的代码如何工作?

static int index = 0;
public static int GetNextIndex()
{
    return index++;
}
Run Code Online (Sandbox Code Playgroud)

我假设,因为增量操作发生在return语句之后,变量'index'将永远不会增加.

但是当使用C#编译器进行测试时,我发现'index'正在增加.

标准编译器如何处理这种情况?

c# compiler-construction

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

为什么我的c#代码不识别版权符号?

byte[] newBytes = new Byte[] { 169 };
string string1 = System.Text.Encoding.UTF8.GetString(newBytes, 0, newBytes.Length);
Run Code Online (Sandbox Code Playgroud)

在上面的程序中,我希望string1具有版权符号©的值.

但我得到一些其他价值(可能是一些垃圾),如下所示

在此输入图像描述

我哪里做错了?

c# unicode utf-8

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

当可以作为静态方法访问时,扩展方法会出现编译错误

我声明了一个扩展方法如下

namespace ExtensionMethods
{
    public static class MyExtensions
    {
        const string Nil = "$$$NIL$$$";
        public static bool IsEmptyNullOrNil(this string str)
        {
            if (string.IsNullOrEmpty(str) || str == Nil)
            {
                return true;
            }
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器类中,我包含了命名空间。但程序无法编译。但我可以将该函数用作普通的静态方法。

在此输入图像描述

任何帮助将不胜感激。

.net c# extension-methods asp.net-core .net-6.0

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