小编Act*_*inz的帖子

WNetAddConnection2使用错误的凭据

我使用WNetAddConnection2时遇到了一个奇怪的问题.首先,我连接到具有正确服务器名称,用户名和密码的WebDAV文件夹.连接按预期建立,我可以使用Windows资源管理器查看已安装的驱动器.

之后我调用WNetCancelConnection2来删除已安装的驱动器.工作正常,它从资源管理器中消失.

现在出现了奇怪的行为.如果我尝试再次连接到服务器,我使用什么密码并不重要,我可以采取完全错误的一个,驱动器再次安装没有任何问题.似乎Windows缓存连接.

我发现它只需要一分钟,然后尝试连接将显示预期的错误消息.

我的问题是,如果这60秒的时间范围是可调整的,或者我可以做些什么来避免这种行为.

在此先感谢您的帮助.

windows winapi webdav

6
推荐指数
0
解决办法
548
查看次数

如何在安装了 Visual Studio 2017 的情况下获取 signtool.exe 的路径

我已经进行了基于 Visual Studio 2012 的项目。通过以下方式找到了 signtool.exe 的路径:

<SignToolPath Condition=" Exists('$(WindowsSDK80Path)bin\x86\signtool.exe') and '$(SignToolPath)'=='' and '$(PROCESSOR_ARCHITECTURE)'=='x86' ">$(WindowsSDK80Path)bin\x86\signtool.exe</SignToolPath>
<SignToolPath Condition=" Exists('$(WindowsSDK80Path)bin\x64\signtool.exe') and '$(SignToolPath)'=='' and '$(PROCESSOR_ARCHITECTURE)'=='AMD64' ">$(WindowsSDK80Path)bin\x64\signtool.exe</SignToolPath>
Run Code Online (Sandbox Code Playgroud)

现在我想将项目移植到 Visual Studio 2017。安装后,由于缺少 Windows SDK 8,以这种方式获取路径不再有效。

我已经安装了 Click Once 组件和 Windows 10 SDK。因此 signtool.exe 可用。

有人能告诉我如何使用 Visual Studio 2017 找到路径吗?

msbuild signtool visual-studio-2017

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

如何在C++ DLL中释放已分配的内存

我有以下代码来加密C++ DLL中的字符串

EXPORT WCHAR* EncryptString(WCHAR* stringToEncrypt) {
    aes_context ctx;

    WCHAR* in = stringToEncrypt;
    WCHAR* out;
    WCHAR* key = L"TestKey";

    BYTE* buffEnc = (BYTE*)malloc(16);
    BYTE* keyBuffEnc = (BYTE*)malloc(32);

    memset(buffEnc, 0, 16);
    memset(keyBuffEnc, 0, 32);

    memcpy(buffEnc, in, wcslen(in) * 2);
    memcpy(keyBuffEnc, key, wcslen(key) * 2);
    aes_set_key(&ctx, keyBuffEnc, 256);

    aes_encrypt(&ctx, buffEnc, buffEnc);
    out = (WCHAR*)buffEnc;

    // free(buffEnc);   
    // free(keyBuffEnc);

    return out;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法释放分配的内存,否则结果会被破坏.我想知道如何在不丢失结果的情况下释放使用过的内存?我要改变返回值的类型吗?

在此先感谢您的帮助.迎接亨氏

c++ dll winapi memory-management

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

资源管理器上下文菜单的 Shell 扩展,图标打破了经典 Windows 设计中的对齐方式

我遇到以下问题,

当为 Windows 资源管理器的上下文菜单添加条目并且 Windows 7 设计设置为经典时,图标会破坏菜单的对齐方式。

此图显示添加条目之前的菜单(请注意 Microsoft Security Essentials 的图标):

正常行为

添加菜单项后,它看起来像这样:

错误的行为

您会看到 Microsoft Security Essentials 的图标和菜单标题之间有一个空格。使用的位图是标准 bmp 16 x 16。

有谁知道为什么会发生这种情况?再说一遍,这只发生在 Win 7 经典设计中,其他设计也能按预期工作。

在此先感谢您的帮助

编辑:

这是我添加该项目的初始代码:

iconHandle = LoadImageW(NULL, iconPath.c_str(), IMAGE_BITMAP, 0, 0,   LR_DEFAULTSIZE | LR_LOADTRANSPARENT | LR_LOADFROMFILE);   

MENUITEMINFOW contextEntryAppSuite = { sizeof(contextEntryAppSuite) };
contextMenuItem.fMask =  MIIM_STRING | MIIM_STATE | MIIM_BITMAP | MIIM_FTYPE | MIIM_ID;
contextMenuItem.dwTypeData = caption;       
contextMenuItem.wID = 0;  
contextMenuItem.fType = MFT_STRING;
contextMenuItem.fState = MFS_ENABLED;
contextMenuItem.hbmpItem = static_cast<HBITMAP>(iconHandle);
if(!InsertMenuItemW(hMenu, indexMenu, TRUE, &contextMenuItem))
{       
    return HRESULT_FROM_WIN32(GetLastError()); …
Run Code Online (Sandbox Code Playgroud)

c++ explorer icons contextmenu shell-extensions

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