人に聞けない痔の悩み、これでスッキリ >>

下記のエラーメッセージが表示されてアプリケーションが動作しないのですが、
Windowsって、環境変数TEMPにアクセスエラーでファイルが書き込めない場合ってあるものなのでしょうか?
また、何が原因でこのような状態になるのでしょうか?

エラー:
TEMP ディレクトリへのアクセスが拒否されました。XmlSerializer を実行している ID '{0}' に、TEMP ディレクトリへのアクセスに必要なアクセス許可がありません。CodeDom では、プロセスが使用しているユーザー アカウントを使用してコンパイルしようとするため、ユーザーが TEMP ディレクトリへのアクセス権を持っていない場合、コンパイルはできません。TEMP ディレクトリの場所を見つけるには、Path.GetTempPath() API を使用してください。
とのエラーが発生します。

環境
.NET Framework2.0(C#/WinForm)
Windows7

補足
TEMPの内容
Path.GetTempPath()で取得すると「C:\Users\hogehoge\AppData\Local\Temp\」
となっており、問題は無さそうです。

テストプログラムのエラー(添付にファイル作成)
System.UnauthorizedAccessException: パス 'C:\Users\hogehoge\AppData\Local\Temp\null.txt' へのアクセスが拒否されました。

以上

このQ&Aに関連する最新のQ&A

A 回答 (3件)

エラーメッセージを見る限り、



> 環境変数TEMPにアクセスエラーでファイルが書き込めない

ではなくて、TEMPフォルダに書き込みできないってエラーでは?

> Path.GetTempPath()で取得すると「C:\Users\hogehoge\AppData\Local\Temp\」

のTEMPフォルダを右クリック-[プロパティ]の「セキュリティ」タブで、ID'{0}'というユーザー(?)からの書き込みを許可しているかどうか確認してみては?
見た感じ、ユーザー名:hogehogeのフォルダですから、同じレベルのユーザーにはアクセス許可無い場合はあるかも。
「環境変数TEMPを使用するアプリがアクセ」の回答画像1
    • good
    • 0

>パス 'C:\Users\hogehoge\AppData\Local\Temp\null.txt' へのアクセスが拒否されました。



C:\Users\hogehoge\AppData\Local\Temp\null.txtを作成したりオープンしたり出来るのは「ユーザー名hogehogeのユーザーのみ」です。

テストプログラムが「hogehoge」以外のユーザーで実行されている場合は、一切、アクセス出来ません。

XmlSerializerも同様で、XmlSerializerを実行しているユーザーがhogehogeじゃない(ID '{0}'のユーザー)場合は、コンパイルできません。

「環境変数TEMPにアクセスできない」のではなくて「環境変数TEMPで示されるフォルダにアクセスできない」のです。

ぶっちゃけ「C:\TEMP\ってフォルダを作って、そのフォルダを、誰でも読み書き可能にして、環境変数TEMPの値をC\TEMP\にしておく」のが、一番楽です。

大昔の古いアプリの中には、環境変数TEMPで示すフォルダの「パス名の長さ」が「32文字以内」である事を想定しているアプリもあるんで「C:\Users\hogehoge\AppData\Local\Temp\」などと言う長いパス名が設定してあったら、色々と問題が起きます。
    • good
    • 0

Vistaが出回りだした頃、ユーザーアカウント制御を無効にするとTEMPにアクセスできなくなるという例がいくつかありましたが……。


Win7で同じかどうかは分かりません。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWindowsフォルダ内のファイルアクセス拒否について

Windowsフォルダ内のファイルアクセス拒否について

Windows7を使用しています。
管理者権限を有するユーザーでログオンしておりますが、Windowsフォルダ内に保管している自社ソフトで使用している設定ファイル(テキスト形式)の内容を変更後に保存しようとしても、保存されません。(上書き保存を実行しても、「名前を付けて保存」ダイアログが表示され、保存を拒否されます。)
C:\Windowsフォルダ自体のセキュリティの問題かと思いますが、解除方法を教えて頂きたく・・・
ちなみに、属性を「フルコントロール」に変更しようとすると、下記のメッセージが表示されてしまいます。
『属性の適用中にエラーが発生しました。』
『C:\Windows\bfsvc.exe』
『アクセスが拒否されました。』

解除方法をご存知の方、対策方法をご教授願います。
なお、他のWin7PCでは、問題なく変更できております。

Aベストアンサー

Windows Vista 以降、管理者権限でログインして
いても、機能制限があります。
詳しくは、以下のUACに関しての説明を読んでください。
http://support.microsoft.com/kb/922708/ja

この制限を解除するためには、一時的にUACを無効に
するのが簡単でしょう。手順は以下の通り。
http://enjoypcblog.blog32.fc2.com/blog-entry-333.html

UACは、セキュリティ上とても有効な機能なので、
設定ファイル編集作業が終わったら、ただちに
元に戻しておくことを強く推奨します。

QWin7でアクセスを拒否されました」が表示される

モノ好きでPCをXPからWindows7に移った(現在併行)のですが、操作に右往左往しています。
そのうちの一つ。
ドキュメントにしろあちこちで「アクセス拒否されました」と言われ中身を見ることが出来ません。
例えば、ライブラリのドキュメントの中のマイドキュメント、My Weblog。
パブリックのドキュメント
ホームグループの中のcookies,MyDocument,スタートメニュー等々です。
見られる処もあります。
保存した先を見つけられない現象が度々あり困っています。XPではエクスプローラーでフォルダーをたどるとほとんど見られました。
W7に於いて、隠しファイルは別にしても、XPの時のように自由に見られるようにするにはどうしたら良いのでしょうか。ご助言をお願い致します。

Aベストアンサー

おはようございます。

アクセス拒否は、

(1) 最初に管理者権限のあるユーザーでログインします
(2) フォルダーを右クリックし、プロパティを選択。
(3) セキュリティタブをクリック、下の詳細設定をクリック。
(4) 所有者タブをクリック、編集をクリックし一覧から
新しい所有者(Administrators権限のあるアカウント)を選択し、
「サブコンテナとオブジェクトの所有権を置き換える」にチェックしてOKをクリック。
(5)「内容を読み取るのに必要なアクセス許可がありません。
デェレクトリの云々」というメッセージが表示されたら「はい」をクリックでOK。


エクスプローラーでツリー状に展開するには

(1)フォルダを開き左上にある整理をクリック→
プルダウンメニューのレイアウトの
ナヴィゲーションウィンドウにチェック

(2)コントロールパネルからフォルダーオプションをクリック、
全般タブのナビゲーションウインドウの
自動的に現在のフォルダーまで展開するにチェックを入れればOKです。


7はスタートメニューの「プログラムとファイルの検索」とタスクバーにショートカットが
使い勝手が良くて気に入っています。

おはようございます。

アクセス拒否は、

(1) 最初に管理者権限のあるユーザーでログインします
(2) フォルダーを右クリックし、プロパティを選択。
(3) セキュリティタブをクリック、下の詳細設定をクリック。
(4) 所有者タブをクリック、編集をクリックし一覧から
新しい所有者(Administrators権限のあるアカウント)を選択し、
「サブコンテナとオブジェクトの所有権を置き換える」にチェックしてOKをクリック。
(5)「内容を読み取るのに必要なアクセス許可がありません。
デェレクトリの云々」というメッセー...続きを読む

Qウィンドウズ7の読み取り専用を解除する方法

この度XPからウィンドウズ7に替えまして、今までXPで蓄積してきたデータは、内蔵ハードディスクに全部入れました。
そのHDDを、新しいWin7に取り付けて、ワード、一太郎などでデータを読みに行き、手を加えて保存するとき、「読み取り専用」で同じ名前では保存できません、と出るのです。
別のフォルダにするか、名前を変えてくださいと出ます。
で、その解消方法は、フォルダのプロパティを開いて、「読み取り専用」のチェックマークを外すとあり、
なるほどフォルダのプロパティを開くと、「読み取り専用」にチェックが入っています。
これを外して、適用ボタンをクリックして、~権限もクリックして、やれやれなのですが、
次にまたファイルを開くと、「読み取り専用」に勝手にチェックマークが入っているのです。
フォルダのプロパティを開いても、またちゃんと「読み取り専用」にチェックマークが入っています。
昨日からこれの繰り返しで、困っています。
どなたか解消方法をご存じでしたら、教えていただけませんか。
よろしくお願いします。

Aベストアンサー

こんばんは
フォルダの場合はファイルと違い、普通、読み取り専用属性は何度遣っても変更できません。

其処で「フォルダ」読み取り専用属性の変更は【attrib】とゆうコマンドを使用します。
A http://faq.epsondirect.co.jp/faq/edc/app/servlet/qadoc?011423
B http://support.microsoft.com/?scid=kb;ja;326549

Bの目次>概要......に[Win7でもOK]と在ります。
以下、好く読んで下さい、貴方なら直ぐ理解し試行出来るでしょう。

※Aの方が判り易いのでしょうか、Aの下の方[ワンポイント]内のKB326549=Bです。

Qhtml上で、バッチやexeファイルの起動をしたい

わけあって、学校(養護学校)初心者向けにhtmlでメニューを作っています。
さて、スタートボタンやディスクトップにショートカットを使わず、htmlの中からバッチファイルやexeファイルを起動できるでしょうか?

もし可能ならば、教えてください。OSはWindows XPで起動したいファイルはexeファイルとバッチファイルです。
よろしくお願いします。

Aベストアンサー

<html><head></head>
<body>
<a href="file:///c:/windows/system32/calc.exe">電卓</a>
</body>
</html>

Qインターネット一時ファイルの場所

インターネット一時ファイルの場所
Windows7ですが、インターネット一時ファイルが現在の場所として
c:\users\ユーザー名\Appdata\Local\Microsoft\Windows\Temporary Internet Files
が表示されています.
でもそこのWindowsにはTemporary Internet Filesのフォルダーその物が有りません。
実際にはどこに有るのでしょうか?
よろしくお願いします。

Aベストアンサー

実際にその場所にあります。

通常は表示されません。

どうしても表示したいのであれば、フォルダーオプションの表示で「保護されたオペレーションファイルシステムを表示しない」のチェックをはずしてください。

ただし、「保護されたオペレーションファイルシステム」ですから、ご自分の責任で行ってください。

Qsqlplusで表示が変なので、出力を整形したい。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------

上記のように意味不明な形式で出てきます。

例えばこんな風に

select カラム1,カラム2,カラム3 from hoge;

カラム1 1の値
---------------------------
カラム2 2の値
---------------------------
カラム3 3の値

等のように分かりやすく表示できないでしょうか?

ちなみにOracle9iR2を使用しています。
sqlに関するツールは使用できないルールでして、あくまでsqlplusのコマンド上でみやすくしなければなりません。

分かりづらくですいませんが、皆さま、ご教授お願いします。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
-----------------------...続きを読む

Aベストアンサー

SQLPLUSを起動して、

SQL>set linesize 列数

でどうだ。

SQL>show linesize

で確認ができる。

QWindowsでのファイルのアクセス履歴の取得について

個人情報保護関連でファイルのアクセス履歴を
とるようになったのですが、Windowsの設定で
アクセスおよび更新履歴等をとることはできるのでしょうか?

宜しくお願いいたします。

Aベストアンサー

Windowsのバージョンを明記されていませんが、個人情報保護法の対象内であることから企業でのご利用と考え、Windows 2000/XP/2003をお使いと仮定します。

ファイルのプロパティ画面から『セキュリティ』タブ、『詳細設定』ボタンへ辿り、新たに表示された画面で『監査』タブを操作すると、ここで指定したユーザからのファイルアクセスをイベントログに残すよう、指定できます。

ただし、監査を行うには予め準備が必要です。スタートメニューから『ファイル名を指定して実行』でgpedit.mscを実行し、グループエディタを起動します。そこで『ローカルコンピュータポリシー』(企業内などでの利用でNTドメインを構築している場合は多少名称が異なります)->『コンピュータの構成』->『Windowsの設定』->『セキュリティの設定』…長いですね… ->『ローカルポリシー』->『監査ポリシー』とツリーを辿り、『オブジェクト アクセスの監査』ポリシーの設定を変更します。

このようにすることで、イベントビューアでのアクセス履歴閲覧が可能となります。

Qファイルやディレクトリの存在確認を行う方法

ファイルをオープンするのはfopenでOKですが、ファイルやディレクトリの存在確認を行う方法が知りたいです。

何か組み合わせて作るものなのでしょうか?
perlとか便利な演算子があるのですが、C/C++って器用ではないですね。
これは処理系?依存の内容ですか?

私の環境は VC6, VC2005 Windows2000です。

Aベストアンサー

int access(const char* path, int mode);
int stat(const char* path, struct stat* sb);

かな?
MSDN を引くと _access_s() を使えとか書いてあるけど。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qインターネット一時ファイルの設定が保存できない(windows10)

windows10、word2010でwordファイルを開くと、「作業ファイルを作成できません環境変数tempの設定を確認してください」というメッセージが出て、ファイルは開きますが保存ができません。

そのため、下記の対応を行いました。
http://johokankyo.com/trouble/shooting/word_nonsave/

しかし、サインアウト&サインインしても、wordを開くと同じメッセージが出ます。
インターネット一時ファイルの設定を見ると、上記URLを行う前の状態に戻っており、設定が保存されていません。

どうすればよいでしょうか?

Aベストアンサー

現状ではレジストリを直接変更するしか対応方法がわかりません。

レジストリエディタの起動
1:Windowsの タスクバー にある検索ボックスに半角で「regedit」と入力する
2:キーボードの Enterキー を押す or 検索にヒットした「regedit.exe」を選択する

以下のキーを検索してくださし。
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer

この下に、
Shell Folders
User Shell Folders
この2つが存在します。

そして、それぞれの中に「Cache」と言うキーが存在します。
ここに、キャッシュフォルダをフルパスで入力します。

それぞれの「Cache」をダブルクリックして、
「C:\Users\[ユーザー名]\AppData\Local\Microsoft\Windows\Temporary Internet Files」
※[ユーザー名]の部分は自分の環境に合わせて書き換えてください。

書き換えたら、「インターネットのオプション」を開いて「現在の場所」が設定されている事を確認してください。

設定されていれば、元のように正常に動作すると思うのですが。

現状ではレジストリを直接変更するしか対応方法がわかりません。

レジストリエディタの起動
1:Windowsの タスクバー にある検索ボックスに半角で「regedit」と入力する
2:キーボードの Enterキー を押す or 検索にヒットした「regedit.exe」を選択する

以下のキーを検索してくださし。
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer

この下に、
Shell Folders
User Shell Folders
この2つが存在します。

そして、それぞれの中に「Cache」と言うキーが存在します。
ここに、キャ...続きを読む


人気Q&Aランキング