小编use*_*248的帖子

如何在不存在用户登录时获取Windows组名称

我有一个场景,用户可以通过他们的Windows组登录到SQL Server.用户本身在数据库中没有登录名或用户名.

然后,我想获取用户登录的Windows组的名称.但是,suser_sname()返回实际的用户名.suser_sid()对我也没有帮助.

有谁知道如何做到这一点?

sql-server

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

即使正确设置了注册表,Windows也不会产生完整的崩溃转储

我的客户正在使用我编写的VB6程序遇到软件崩溃.

我已经设置了注册表来生成完整的崩溃转储,我看到它与其他程序崩溃的系统正常工作,但出于某种原因,对于我的程序,它会在完全不同的目录中创建简单的崩溃转储.

我的程序在x64计算机上运行32位.我已经设置了如图所示的注册表,包括SOFTWARE\Microsoft和SOFTWARE\Wow6432Node\Microsoft.

仍然无法正常工作.

有谁知道我怎么能确定每次程序崩溃时都会产生完整的崩溃转储?

我所做的注册表更改

windows crash-reports crash-dumps windows-error-reporting

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

用于用户控件的VB6 Initialize事件称为AFTER Terminate事件

我在VB6中创建了一个简单的表单,并添加了一个简单的空白用户控件.唯一的代码是所有重大事件中的Debug.Print语句.

出于某种原因,当表单关闭时,用户控件中的事件顺序为:

Terminate
Initialize
Read Properties
Resize
Run Code Online (Sandbox Code Playgroud)

为什么会这样?为何在终止后调用Initialize,ReadProperties和Resize?我在Microsoft文档中找不到任何此类证据.

编辑:

这是代码.

用户控制:

VERSION 5.00
Begin VB.UserControl UserControl1 
   ClientHeight    =   3600
   ClientLeft      =   0
   ClientTop       =   0
   ClientWidth     =   4800
   ScaleHeight     =   3600
   ScaleWidth      =   4800
End
Attribute VB_Name = "UserControl1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Private Sub UserControl_Initialize()
    Debug.Print "Initialize"
End Sub

Private Sub UserControl_InitProperties()
    Debug.Print "InitProperties"
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    Debug.Print "ReadProperties"
End Sub

Private Sub …
Run Code Online (Sandbox Code Playgroud)

vb6

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

RegSetValueEx 返回“访问被拒绝”,即使 regedit 允许同一用户编辑此值

我们的 VB6 旧应用程序调用 RegSetValueEx 来设置注册表值。可以使用 regedit 轻松设置此注册表值。但是,当我们的应用程序尝试设置它时,RegSetValueEx 返回 5 - Access Is Denied。

我们使用相同的代码写入其他注册表项,一切正常。此外,用户是本地管理员。

密钥是使用 KEY_ALL_ACCESS 打开的,但我尝试使用 (KEY_READ 或 KEY_WRITE) 并且这也不起作用。

Private Const READ_CONTROL = &H20000
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL)
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const STANDARD_RIGHTS_WRITE = …
Run Code Online (Sandbox Code Playgroud)

vb6 registry winapi windows-security

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

如何在ObjectListView中正确选择一行?

我在C#和.Net 4.0中使用ObjectListView。我编写了重新加载列表视图的代码,然后重新选择了最后选择的索引。

重新选择代码非常简单:

olvListView.SelectedIndex = i;
Run Code Online (Sandbox Code Playgroud)

这似乎起作用,因为已选中该项目。但是,如果我然后单击向上或向下箭头,则选择将跳至第二行(无论我选择了哪一行),这表明无论i的值是多少,选择实际上都是在第一行设置的。

我在这里做错了什么?

c# winforms objectlistview

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

C#:读取字符串的第一个字符,当char的unicode值> 65535时

我有一个C#方法需要检索字符串的第一个字符,并查看它是否存在于包含特定unicode字符的哈希集中(所有从右到左的字符).

所以我在做

var c = str[0];
Run Code Online (Sandbox Code Playgroud)

然后检查hashset.

问题是这个代码不适用于第一个char的代码点大于65535的字符串.

我实际创建了一个循环,遍历0到70,000之间的所有数字(最高RTL代码点大约68,000,所以我向上舍入),我从数字创建一个字节数组,并使用

Encoding.UTF32.GetString(intValue);
Run Code Online (Sandbox Code Playgroud)

用这个字符创建一个字符串.然后我将它传递给在HashSet中搜索的方法,并且该方法失败,因为它何时获得

str[0]
Run Code Online (Sandbox Code Playgroud)

这个价值永远不会是应有的.

我究竟做错了什么?

c# unicode utf-16 utf-32

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

确定您是否已选中或未选中

在C#中,有没有办法在代码中检测当前运行的代码块是以检查还是未检查的模式运行?

例如 - 如果您在库中有一个方法供其他人使用,并且您想要决定是否溢出您在自定义数据类型上执行的算术运算.

c#

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