C# 使用本机c++;
我有一个dotnet winform应用程序,它被压缩并受密码保护。可以从windows命令提示符打开应用程序,并提供密码作为命令行参数(例如MyApp.exe)。我想从本地C++应用程序启动dotnet应用程序,而不是命令提示符。我尝试了下面的代码,它在没有密码的情况下工作,但是使用密码时会出现一些加密错误C# 使用本机c++;,c#,c++,.net,rpx,C#,C++,.net,Rpx,我有一个dotnet winform应用程序,它被压缩并受密码保护。可以从windows命令提示符打开应用程序,并提供密码作为命令行参数(例如MyApp.exe)。我想从本地C++应用程序启动dotnet应用程序,而不是命令提示符。我尝试了下面的代码,它在没有密码的情况下工作,但是使用密码时会出现一些加密错误 #include "stdafx.h" #include "windows.h" #include "shellapi.h" int _tmain(int argc, _TCHAR* a
#include "stdafx.h"
#include "windows.h"
#include "shellapi.h"
int _tmain(int argc, _TCHAR* argv[])
{
SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = L"runas";
shExecInfo.lpFile = L"MyApp.exe";
shExecInfo.lpParameters = L"password";
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_NORMAL;
shExecInfo.hInstApp = NULL;
ShellExecuteEx(&shExecInfo);
return 0;
}
如何实现这一点?“出现了一些加密错误”我想我们将轮流猜测错误是什么。这可能需要一些时间:)当然。如果我从命令提示符(例如MyApp.exe)运行,那么应用程序运行没有任何问题。我总是首先将这些结构初始化为零,例如ZeroMemory(&shExecInfo,sizeof(shExecInfo));在我确定尺寸之前。我还使用了_T(“runas”)或ShellExecuteInfo,而不是将Ls与Ts@AngusConnellLs和Ts之间有什么区别?Ts作为TCHARs,Ls作为宽字符字符串,如果查看SHELLEXECUTEINFO,您会发现有一个#define指向char*版本或宽字符*版本。所以_T(“xx”)将是宽字符*或字符*取决于您设置项目的方式,它不会改变任何东西,但这意味着如果您更改项目设置,它仍将编译