我使用WNetAddConnection2时遇到了一个奇怪的问题.首先,我连接到具有正确服务器名称,用户名和密码的WebDAV文件夹.连接按预期建立,我可以使用Windows资源管理器查看已安装的驱动器.
之后我调用WNetCancelConnection2来删除已安装的驱动器.工作正常,它从资源管理器中消失.
现在出现了奇怪的行为.如果我尝试再次连接到服务器,我使用什么密码并不重要,我可以采取完全错误的一个,驱动器再次安装没有任何问题.似乎Windows缓存连接.
我发现它只需要一分钟,然后尝试连接将显示预期的错误消息.
我的问题是,如果这60秒的时间范围是可调整的,或者我可以做些什么来避免这种行为.
在此先感谢您的帮助.
我已经进行了基于 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 找到路径吗?
我有以下代码来加密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)
我的问题是我无法释放分配的内存,否则结果会被破坏.我想知道如何在不丢失结果的情况下释放使用过的内存?我要改变返回值的类型吗?
在此先感谢您的帮助.迎接亨氏
我遇到以下问题,
当为 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)