小编Tre*_*eld的帖子

是否可以在Windows中以管理员身份运行相对路径的快捷方式?

要使用相对路径创建快捷方式,请将目标设置为以下内容.

%windir%\system32\cmd.exe /c start your_relpath\app.exe [your_args]
Run Code Online (Sandbox Code Playgroud)

使程序以管理员身份运行也很简单.

Properties > Advanced > Run as administrator
Run Code Online (Sandbox Code Playgroud)

但将两者放在一起并不奏效.当cmd.exe开始为管理员,它失去当前的工作目录,并去%windir%\system32.相对路径从那里开始,这不是预期的.

有没有办法制作一个相对又以管理员身份运行的快捷方式?

windows uac shortcut relative-path

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

Uri.EscapeDataString很奇怪

为什么EscapeDataString在.NET 4和4.5之间表现不同?输出是

  • Uri.EscapeDataString("-_.!~*'()") => "-_.!~*'()"

  • Uri.EscapeDataString("-_.!~*'()") => "-_.%21~%2A%27%28%29"

文档

默认情况下,EscapeDataString方法将除RFC 2396非保留字符之外的所有字符转换为十六进制表示形式.如果启用了国际资源标识符(IRI)或国际化域名(IDN)解析,则EscapeDataString方法将除RFC 3986非保留字符之外的所有字符转换为其十六进制表示形式.在转义之前,所有Unicode字符都将转换为UTF-8格式.

作为参考,RFC 2396中的未保留字符定义如下:

unreserved    = alphanum | mark

mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |
                (" | ")"
Run Code Online (Sandbox Code Playgroud)

RFC 3986中:

ALPHA / DIGIT / "-" / "." / "_" / "~"
Run Code Online (Sandbox Code Playgroud)

源代码

看起来EscapeDataString的每个字符是否被转义都是大致相同的

is unicode above \x7F
  ? PERCENT ENCODE
  : is a percent symbol
    ? is an escape char
      ? LEAVE ALONE
      : PERCENT ENCODE …
Run Code Online (Sandbox Code Playgroud)

.net c# escaping percent-encoding .net-4.5

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