12

小さな XML データ ファイルを外部ドライブに保存していますが、問題はありません。しかし、その後、 ApplicationData フォルダーなどを使用しようとしましたが、C:\ でも運がありませんでした。「パス "C:\" へのアクセスが拒否されました」のようなエラーが表示されます。

確認のために、ファイルが作成され、現在のコードで外部ドライブに正常に読み取られます。これはセキュリティとアクセス許可に関係していると思いますが、あまり役立つものは見つかりませんでした。

これについて正しい方向に私を向けることができれば、事前に感謝します!

        string fipData = @"F:\IL2\SIIYM\SIIYM Data.xml";  //  external drive ok :-)
        //string fipData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
        //string fipData = @"C:\";

        //  if the XML data file doesn't exist, create it
        bool dataFileExists = File.Exists(fipData);
        if (dataFileExists)
        {
            //  read the XML values
            XDocument xData = XDocument.Load(fipData);
            //...
        }
        else
        {
            //  create & save the XML data file
            XElement xLastPath = new XElement(el_lastPath, "");
            XElement xLastCode = new XElement(el_lastCode, "");

            XElement xRoot = new XElement(el_root);
            xRoot.Add(xLastPath);
            xRoot.Add(xLastCode);

            XDocument newDataFile = new XDocument();
            newDataFile.Add(xRoot);

            try
            {
                newDataFile.Save(fipData);
            }
            catch (Exception ex)
            {   
                MessageBox.Show("Data file unable to be created. System message:{0}".Put(Environment.NewLine + Environment.NewLine + ex.Message));
            }
        }
4

3 に答える 3

11

別の回答へのコメントで、これはデスクトップアプリケーションだと言っているので、各場所を個別に扱いましょう。

Vista 以降では、通常のユーザーはシステム ドライブ (通常は C:) のルート ディレクトリにファイルを作成する権限がありません。これは、エクスプローラーで C:\ を開き、右クリックしてファイルを作成しようとすると、UAC プロンプトが表示されるはずです。したがって、C:\ に書き込みたい場合は、昇格を要求する適切なマニフェストを介して、またはその場所に書き込みたいときに別のプロセスを開始して、アプリケーションを管理者として実行する必要があります。

ただし、Application Data、Environment.SpecialFolder.ApplicationData は機能するはずです。返される実際のディレクトリを出力すると、何が得られますか?

于 2009-09-20T14:02:18.897 に答える
2

アプリケーションは、ローカル ドライブにアクセスできないユーザーのコンテキストで実行されている必要があると想像できます。たとえば、匿名の IIS アカウントまたは関連するネットワークにのみアクセスできるサービス アカウントで実行されている ASP.NET Web サイトなどです。場所。

于 2009-09-20T12:55:06.280 に答える
1

ほとんどの場合、外付けドライブは FAT でフォーマットされています。FAT はユーザーの権限管理をサポートしていないため、そこに保存しても問題ありません。

それに加えて、IIS ユーザーには、既に述べた Adam のような他のフォルダーへの権限がありません。

于 2009-09-20T12:57:11.743 に答える