相关疑难解决方法(0)

如何编码和解码base64字符串?

  1. 如何在给定字符串的情况下返回base64编码的字符串?

  2. 如何将base64编码的字符串解码为字符串?

c# base64

809
推荐指数
10
解决办法
72万
查看次数

如何在processStartInfo中传递多个参数?

我想cmdc#代码中运行一些命令.我跟着一些博客和教程得到了答案,但我有点困惑,即我应该如何传递多个参数?

我使用以下代码:

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = 
...
Run Code Online (Sandbox Code Playgroud)

startInfo.Arguments以下命令行代码的值是多少?

  • makecert -sk server -sky exchange -pe -n CN=localhost -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyAdHocTestCert.cer

  • netsh http add sslcert ipport=127.0.0.1:8085 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable

c# cmd makecert netsh

32
推荐指数
2
解决办法
9万
查看次数

如何在里面使用带引号的字符串?

我有以下字符串,我想将其作为一个进程执行:

Rundll32 Printui.dll,PrintUIEntry /ia /K /q /m "SHARP MX-5500N PS" /h "Windows NT x86" /v 3 /f sn0hwenu.inf

但是,如果存在引号,我无法在C#中插入此字符串以使其进行编译,从而保留所有原始结构.我该怎么解决这个问题?由于字符串中有引号,这有点棘手.

c#

26
推荐指数
4
解决办法
9万
查看次数

在C#中传递命令行参数

我正在尝试将命令行参数传递给C#应用程序,但我有问题传递这样的东西

"C:\Documents and Settings\All Users\Start Menu\Programs\App name"
Run Code Online (Sandbox Code Playgroud)

即使我加入" "了这个论点.

这是我的代码:

    public ObjectModel(String[] args)
    {
        if (args.Length == 0) return; //no command line arg.
        //System.Windows.Forms.MessageBox.Show(args.Length.ToString());
        //System.Windows.Forms.MessageBox.Show(args[0]);
        //System.Windows.Forms.MessageBox.Show(args[1]);
        //System.Windows.Forms.MessageBox.Show(args[2]);
        //System.Windows.Forms.MessageBox.Show(args[3]);
        if (args.Length == 3)
        {
            try
            {
                RemoveInstalledFolder(args[0]);
                RemoveUserAccount(args[1]);
                RemoveShortCutFolder(args[2]);
                RemoveRegistryEntry();
            }
            catch (Exception e)
            {
            }
        }
        }
Run Code Online (Sandbox Code Playgroud)

这就是我要传递的内容:

C:\WINDOWS\Uninstaller.exe  "C:\Program Files\Application name\"  "username"  "C:\Documents and Settings\All Users\Start Menu\Programs\application name"
Run Code Online (Sandbox Code Playgroud)

问题是我可以正确地获得第一个和第二个args,但是它得到的最后一个args C:\Documents.

有帮助吗?

c# command-line-arguments

18
推荐指数
2
解决办法
7万
查看次数

用于转义.NET命令行参数的规范解决方案

问题:给定文件名和任意字符串列表,是否有一种规范的方法来创建单个命令行,以便Environment.GetCommandLineArgs(和C#的void main(String[] args)/ VB Sub Main(args() As String))将返回相同的字符串列表?


背景:.NET将命令行拆分为参数的方式非常复杂,例如:

如果双引号跟随两个或偶数个反斜杠,则每个前进的反斜杠对将替换为一个反斜杠,并删除双引号.如果双引号跟随奇数个反斜杠(包括只有一个),则每个前一对用一个反斜杠替换,剩下的反斜杠被删除; 但是,在这种情况下,双引号不会被删除.

许多人尝试简单的"将每个参数放在双引号中并转义现有的双引号"方法,并且只要其中一个参数包含一个尾部反斜杠就会失败.有关此问题的StackOverflow存在各种问题,例如:

然而,他们的答案要么不够通用,不能为所有案例提供规范解决方案,要么似乎是"迭代地"开发("哦,还有一个我忘了的特殊情况,让我们添加它,现在它应该覆盖大多数情况...... ").由于这是一个非常常见的问题,我希望看到一个解决方案,例如,通过其中任何一个提供信心

  • 来自权威来源(可能来自参与此疯狂命令行约定的开发人员之一的博客条目)或
  • 提供给定算法满足.NET命令行要求的正式证明.

.net c# vb.net command-line-arguments

15
推荐指数
1
解决办法
2833
查看次数

如何转义包含空格的路径

要将带空格的路径传递给.NET控制台应用程序,您应该将其转义.可能没有逃脱,但用双引号括起来:

myapp.exe --path C:\Program Files\MyApp`
Run Code Online (Sandbox Code Playgroud)

new string[] { "--path", "C:\Program", "Files\MyApp" }
Run Code Online (Sandbox Code Playgroud)

myapp.exe --path "C:\Program Files\MyApp"
Run Code Online (Sandbox Code Playgroud)

new string[] { "--path", "C:\Program Files\MyApp" }
Run Code Online (Sandbox Code Playgroud)

它工作正常,你可以很容易地解析它.

我想扩展一个带有附加参数的参数集,并使用生成的参数集启动一个新进程:

new ProcessStartInfo(
    Assembly.GetEntryAssembly().Location,
    String.Join(" ", Enumerable.Concat(args, new[] { "--flag" })))
Run Code Online (Sandbox Code Playgroud)

这成为myapp.exe --path C:\Program Files\MyApp --flag路径逃脱的地方.

如何使用通用解决方案解决它?(不搜索每个参数的值,需要转义并手动引用)

c# escaping console-application command-line-arguments

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

Process.Start的转义字符串

如何将未知字符串转义为传递给Process.Start作为参数?

我目前正在逃避基本的引号和反斜杠,但最近我的输入开始包含http://www.fileformat.info/info/unicode/char/ff02/index.htm(全宽引号)等内容.

所以我的问题是,我需要逃避什么才能安全地传递一个字符串作为Process.Start的参数?

编辑: 所以我需要澄清一下.我真正想要的是一个必须在cmd.exe的带引号的字符串("foo")中转义的所有字符的列表.我最初处理双引号字符以及反斜杠字符,但我最终有一些输入包含一个全宽带引号(如上所述),它也需要转义.所以问题是,对于使用Process.Start传递给cmd.exe的带引号的字符串参数,我还需要转义什么?

c# cmd escaping

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

在命令行中传递参数数组

我看过这个关于在C#中传递命令行参数的问题.

但在我的情况下,我必须将参数数组传递给调用.exe文件.

例如

var arr = new string[] {"Item title","New task","22","High Priority"}
Run Code Online (Sandbox Code Playgroud)

是否可以Process.Start()与exe路径一起使用数组

我有.exe路径

const string path = @"C:\Projects\Test\test.exe";
Run Code Online (Sandbox Code Playgroud)

谢谢

.net c# .net-4.0 winforms c#-4.0

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

输入字符串不是有效数字 - JSON 反序列化

我有这个数组:

{
    "AssemblyVersion":"0.1.333.5973",
    "Exception":
    {
        // [...]
    }
}
Run Code Online (Sandbox Code Playgroud)

它是从此类序列化的:

public class ErrorData
{
    public string AssemblyVersion { get; private set; }
    public Exception Exception { get; private set; }

    public ErrorData(string assemblyVersion, Exception ex)
    {
        AssemblyVersion = assemblyVersion;
        Exception = ex;
    }

    public override string ToString()
    {
        return JsonConvert.SerializeObject(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

将其序列化回对象会产生以下异常:

Newtonsoft.Json.JsonReaderException: Input string '0.1.335.5973' is not a valid number. Path 'AssemblyVersion', line 1, position 29.
    at Newtonsoft.Json.JsonTextReader.ParseNumber(ReadType readType)
    at Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType)
    at Newtonsoft.Json.JsonTextReader.ReadAsString()
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract …
Run Code Online (Sandbox Code Playgroud)

c# json.net

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

ProcessStartInfo.Argument如何考虑参数

我使用以下代码启动另一个带有参数的进程,这里我传递一个字符串路径作为参数,路径返回为c:\ documents和settings \\ local settings ::

string path = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)).FullName(); //path = c:\documents and settings\<username>\local settings

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = path;
Process.Start(startInfo);
Run Code Online (Sandbox Code Playgroud)

我想把路径作为一个参数传递,一个完整的字符串.但我发现路径已被多个参数分隔,它实际上被每个空格分隔开.在这种情况下,它传递c:\ documents作为第一个参数,作为第二个参数和 settings \\ local作为第三个参数传递...

我想将它们作为一个参数而不是4个参数传递.怎么办StartInfo.Argument呢?

c# process

4
推荐指数
3
解决办法
5697
查看次数