1

VB.NET と .NET 3.5 を使用して VS2010 に Windows アプリがあります。形式がなく非常に単純で、文字列であると仮定してクリップボードの内容を「起動」します。これは ASP.NET ではなく、Web アプリとは関係ないことに注意してください。

コードの核心は次のとおりです。

Dim proc As New Process()
proc.StartInfo.FileName = strClipboard
proc.StartInfo.UseShellExecute = True
proc.StartInfo.CreateNoWindow = True
proc.Start()

何年もの間、それはうまく機能しています。ユーザーがファイル パスを持っている場合、たとえば "c:\temp\file.txt" がシステム クリップボードに文字列として保存されている場合、このアプリを実行できます (通常は、マウス ボタンに割り当てます)。 [スタート] > [ファイル名を指定して実行] にテキストを貼り付け、Enter キーを押します。

最近、私たちのシステムに何か変化がありました。よくわかりませんが、マップされたドライブでは機能しなくなるため、新しいサーバー構成のすべてが変更されたり、グループポリシーが変更されたりする可能性があると思われます。

たとえば、これは問題なく機能します。

C:\Temp\test.txt

しかし、これではありません:

L:\Temp\test.txt

L は、ローカル ファイル サーバー上のマップされたドライブです。例外から得られるエラーは、単にファイルが見つからないということです。

System.ComponentModel.Win32Exception was caught
  ErrorCode=-2147467259
  Message=The system cannot find the path specified
  NativeErrorCode=3
  Source=System
  StackTrace:
       at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
       at VS10_Launch_Clipboard.Launch_Clipboard.Main() in C:\Users\user\Documents\Visual Studio 2010\Projects\VS10_Launch_Clipboard\VS10_Launch_Clipboard\Module1.vb:line 21
  InnerException: 

何か案は?

ありがとう

アーニー

4

1 に答える 1

1

あなたのコードをテストしたところ、正しく動作しました。エラーを再現できる唯一の方法は、マップされていないドライブ (マップされていない z:\text.txt に変更) で実行することです。

プログラムを実行しているコンピューターのコンピューターに、指定されたマップされたドライブがあることを確認してください。プログラムがサーバー上にあり、そのサーバーに必要なマップされたドライブがあるからといって、プログラムを実行しているクライアントが同じマップされたドライブを持っているとは限りません。

于 2013-08-23T13:29:51.293 に答える