小编Jon*_*nas的帖子

如何从32位代码启动64位的Windows进程?

要在写入HKLM注册表配置单元时在Vista中弹出UAC对话框,我们选择不使用Win32注册表API,因为缺少Vista权限时,我们需要使用管理员权限重新启动整个应用程序.相反,我们这样做:

ShellExecute(hWnd, "runas" /* display UAC prompt on Vista */, windir + "\\Reg", "add HKLM\\Software\\Company\\KeyName /v valueName /t REG_MULTI_TZ /d ValueData", NULL, SW_HIDE);
Run Code Online (Sandbox Code Playgroud)

这个解决方案工作正常,除了我们的应用程序是一个32位,它运行REG.EXE命令,因为它将是一个使用WOW兼容性层的32位应用程序!:(如果从命令行运行REG.EXE,它在64位模式下正常运行.这很重要,因为如果它作为32位应用程序运行,由于注册表反射,注册表项将最终在错误的位置.

那么有没有办法从32位应用程序以编程方式启动64位应用程序,而不是像使用其父级32位进程(即任务管理器中的"*"后缀)那样使用WOW64子系统运行?

c++ registry 64-bit winapi

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

为什么动态IEnumerable上的First()或ElementAt()是等待的?

我正在使用Dapper并让它返回一个动态IEnumerable,如下所示:

var rows = conn.Query("SELECT * FROM T WHERE ID = @id", new { id = tableId });
var row = rows.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

这里rows是类型IEnumerable<dynamic>.IntelliSense说FirstOrDefault()是等待的,并且有用途await FirstOrDefault().并非所有LINQ查询都显示为等待,但似乎特别是那些单独输出元素的查询.

一旦我改为使用强类型,这种行为就会消失.

是因为.NET无法知道您在运行时接收的类型是否等待,以便它"允许"它,以防您需要它?但是不强制执行吗?或者我应该,由于一些动态语言运行时行为,实际上await在这里使用?

我一直在搜索,但没有在网上找到最小的东西.

c# linq asynchronous dynamic async-await

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

什么/ Visual Studio 2008中的"符号浏览器"在哪里?

好的,这就是后台...我将手动修复项目中的多个资源头文件.这包括修复这个值,除其他外:#define _APS_NEXT_SYMED_VALUE......自动写入(通常)resource.h.

它被记录为具有此目的:

_APS_NEXT_SYMED_VALUE是使用符号浏览器中的"新建"命令手动分配符号值时将发出的下一个符号值.

符号浏览器在哪里??我想知道,因为我想知道我为这些值设置了什么.我知道浏览器/视图是什么,我知道对象浏览器是什么,但这让我疯狂.:-D我甚至用Google搜索过"visual studio" "symbol browser",但没有提供有关浏览器的文档.我知道如果那里有"新"命令,我就在正确的位置,我可以在其中手动分配符号值.嗯...

windows ide visual-studio

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

将三个字母的语言代码转换为语言标识符(LANGID)

有没有在Win32 API中的一些方法来转换一个三个字母的语言代码,通过返回GetLocaleInfo()LOCALE_SABBREVLANGNAME指定到相应的LANGIDLCID?也就是说,与GetLocaleInfo()正常情况"反向"进行?

我要做的是解析资源DLL正在使用什么样的语言,到目前为止,没有涉及DLL的任何内容,使用格式的dll名称nameLNG.dll,其中LNG是三个字母的语言代码,似乎假设存在这样的函数,这是最简单的方法.

如果这不容易做到,我想Plan B就是给我们的语言DLL一个版本信息资源,在那里指定他们各自的文化,然后在应用程序中,阅读他们使用的文化.

c++ winapi internationalization

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