1

サブディレクトリを既存のパスに追加しようとしています。

Win-7 64、インテル SSD

「管理者」としてではなく、管理者特権を持つユーザーとして会社のドメインにログインしました

Visual Studio 2008、通常どおり起動 (「管理者として実行」ではありません)

MyApp は次のとおりです (WinForms、デバッグ、x86):

 [STAThread]
  private static void Main(string[] args)
  {
     string p = @"C:\ProgramData\MyCompany\MyApp";
     Directory.CreateDirectory(p);
     string f = "a.txt";
     string fullPath = Path.Combine(p, f);
     File.WriteAllText(fullPath, string.Empty);
     Directory.Delete(p);

予想どおり、最後の行で IOException: "The directory is not empty" がスローされます。サブディレクトリとファイルが作成されたことを意味するはずです。

問題: Windows エクスプローラーに MyApp サブディレクトリが表示されません (更新後でも、アドレス バーにパスを入力するか、閉じる/再度開くか、または再起動します)。

C:\ProgramData\MyCompany\ は別のアプリケーションのインストーラーによって作成されました。Windows エクスプローラーは、現在の所有者が System であると表示しています。

同じ IDE を使用してコンソール アプリ (デバッグ、x86) を作成し、上記の行をコピーして実行しました。Windows Explorer は、喜んで DigitalTestApps とその中のファイルを表示してくれました。

MyApp に対して次のいずれかを実行すると、問題は解消されます (つまり、Windows エクスプローラーで "MyApp" サブディレクトリとその中のファイルが表示されます)。

  • x64 としてビルド

  • 「管理者として実行」を使用して Visual Studio を起動します。

  • 「MyApp」以外の名前を使用します(ただし、レガシーの理由から MyApp を使用する必要があります)

何が原因でしょうか?

4

1 に答える 1

0

@dtb はあまりにも謙虚な (または忙しい) ため、彼のコメント (これで私の問題は解決しました) を回答として再投稿できませんでした。そのため、彼のコメントをここにコピーして、他の人がこれがどのようになったかを簡単に確認できるようにします。

「ディレクトリとファイルが C:\Users\JimC\AppData (フォルダー仮想化) のどこかにあることを確認してください。関連: MS Vista の ProgramData フォルダーで仮想化を行う理由は?

それで、彼のアドバイスを読んだ後、私がしたことは次のとおりです。

C:\Users の下から仮想化されたディレクトリを削除したところ、正常に動作し始めました。そもそもどのように作成されたのかはわかりませんが、存在している間は、仮想化されたディレクトリを見つけると予想していたディレクトリを作成しようとしているようです。

今後ともdtbをよろしくお願いいたします。

于 2013-07-04T16:42:14.457 に答える