Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用本机c++;_C#_C++_.net_Rpx - Fatal编程技术网

C# 使用本机c++;

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

我有一个dotnet winform应用程序,它被压缩并受密码保护。可以从windows命令提示符打开应用程序,并提供密码作为命令行参数(例如MyApp.exe)。我想从本地C++应用程序启动dotnet应用程序,而不是命令提示符。我尝试了下面的代码,它在没有密码的情况下工作,但是使用密码时会出现一些加密错误

#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”)将是宽字符*或字符*取决于您设置项目的方式,它不会改变任何东西,但这意味着如果您更改项目设置,它仍将编译