请参阅传递给程序的命令行参数

你可以跳过这一部分

我正在使用我的拇指驱动器中的批处理文件来安装真正的密码卷。 我借助此链接创建了该批处理文件。 在该批处理文件中,我有用户名和密码,我将其作为参数传递给trueCrypt.exe,以便安装它。


无论如何,我的问题是:是否可以看到从第三方进程传递给程序的参数? 换句话说,是否可以看到传递给该程序的参数:

using System; using System.Reflection; using System.Diagnostics; class Program { static string password = ""; static void Main(string[] args) { if (args.Length > 0) password = args[0]; // get location where this program resides var locationOfThisExe = Assembly.GetExecutingAssembly().Location; Console.Write("Press enter to start a new instance of this program."); Console.Read(); var randomArgument = new Random().NextDouble().ToString(); Process.Start(locationOfThisExe, randomArgument); // I am passing a random argument to a new process! // is it possible to see these arguments from another process? } } 

编辑

我正在创建一个编辑原因我认为我不正确地解释了我的自我,但这个编辑应该是一个解决方案而不是一个问题

我认为这个问题没有得到足够的重视。 执行https://stackoverflow.com/users/235660/alois-kraus显示的命令显示:

(我将输出粘贴在记事本++上)

在此处输入图像描述

在图像上它没有很清楚地显示,但我能够看到参数传递给那个过程。 这对我来说非常重要,因为我使用以下命令安装我真正的密码卷:

“C:\ Program Files \ TrueCrypt \ TrueCrypt.exe”/ v“a:\ volume.tc”/ lz / a / pa

告诉truecrypt我想在驱动器号z上挂载位于a:\volume.tc的卷,密码是

如果我执行该命令,则真正的crypt将在驱动器z上安装该卷:

在此处输入图像描述

问题是如果我然后执行命令wmic process注意什么鞋:

在此处输入图像描述

注意密码就在那里!

总而言之,将安全信息作为参数传递是不安全的。 如果你关闭收到参数的过程可能是安全的,但我认为重要的是要意识到这一点……

如果具有管理权限或具有相同用户帐户的其他用户可以执行程序,则可以看到所有命令行

 wmic process 

使用此单个命令行的所有进程。