2012-01-11 15 views
8

私は、Windows 7の32ビットマシンからいくつかのPOS端末にリンクするVB6アプリケーションを持っています。 POS端末はWindows 7マシンにマップされており、Windows 7マシンからExplorerまたはcmdline/shell経由でPOS端末にアクセスできます。Windows 7でVB6アプリケーションがマップされたドライブにアクセスできない

アプリケーションはADO 2.8にアップデートされました。ソースコードがなくなったその他のコントロールとコンポーネントはすべて書き直されました。いくつかの厄介な問題の後、Windows 7のコンピュータでエラーなく再コンパイルするアプリケーションを手に入れました。

問題が発生しました。 VB6アプリケーションは、マップされたドライブを参照またはナビゲートできません。私はUACの設定を変えようとしました。私はWindows XP SP3モードで動作するようにアプリを設定しました。私は管理者として実行しようとしました。これらのもの(およびこれらの多くの順列)はどれも動作しません。

この作品の作成方法についてのご意見はありますか?

+0

に役立ちますか?そのモードで*実行しないとどうなりますか? – Gabe

+0

Windows XP SP3を互換モードとして使用するように設定して、互換モードで実行するように設定します。これは、リンクを右クリックし、[プロパティ]を使用して行います。実際には、この互換モードを使用して実行したときに違いはありません。 –

+1

マップされたドライブにナビゲートしようとするとどうなりますか? UNCの経路はどうですか? – Gabe

答えて

4

カジュアルドライブマッピングはユーザー単位で、UACシステムでは問題があると思います。管理者グループのユーザーは2つのコンテキスト(トークンごとに1つずつ、SU &が上がっています)があります。

システムレベルのドライブマッピングは、システムユーザー(NT Authority \ System)で行われるものです。このアカウントのドライブをマップし、それを永続的にマップすると、すべてのユーザーがマッピングを表示して使用することができます(そこにあるファイルに対する通常のアクセス権に従います)。

これは、ドメインレベルのGPO(グループポリシーオブジェクト)を使用する通常の方法です。企業の管理LAN環境の場合は、ローカルボックスの騎手に賄賂を与えることです。リモートサーバはMediaShare、ユーザーTheUser、ある存在

at 8:53 am "net use m: \\MediaShare\MyLibrary 
    ThePW /user:MediaShare\TheUser /persistent:yes > nul" 

:ワークグループのマシンでこれを行うには

一つの方法は、上昇コマンドプロンプトから、ATコマンド経由でシステムなどの文字をマッピングすることですパスワードThePW、および8:53 AMは、将来明日のためにこれを間違ってスケジュールすることを避けるため、1〜2分後です。

しかし、これはセッション0アイソレーションのためにVista以降では失敗します!

だから、第3の代替物をRun CMD.exe as Local System Accountに使ってください。これは、ForcePushの返信で述べたのと同じものです。How to map a network drive to be used by a serviceです。

私はこれがあなたの後ろにあると信じています。

+0

ありがとうございます。この場合、ドライブマッピングは、最初にログインしたユーザーによるローカルマッピングとして設定されました。私はそれが問題を引き起こしている可能性があると仮定し、その後、ネットワークのサポート担当者が、ユーザが推奨するようにGPOまたはログインスクリプトによって設定されるマッピングを設定するようにユーザを設定しました。いずれの場合も結果は同じです。ログインしたユーザーは、マップされたドライブを確認したり、エクスプローラを使用したりコマンドラインからすべてのファイルにアクセスすることができます。ただし、VB6アプリケーションは、実行時に共有を参照したりアクセスしたりすることはできません。 –

+0

一般的に、ログインスクリプトは、ログオンしていないユーザーのマッピングのみを設定します。正確にどのような資格情報でVB6プログラムを実行できますか?同じユーザーですか?昇格したユーザーですか?他のユーザーですか? – Bob77

+0

アプリケーションは、ログインしているユーザーの資格情報で実行されます。これは、アプリケーションの観点から必要なすべてです。 –

8

このレジストリ設定を追加すると、私の問題が解決しました:http://technet.microsoft.com/en-us/library/ee844140%28v=ws.10%29.aspx

この問題を回避するには、EnableLinkedConnections レジストリ値を構成します。この値により、Windows VistaとWindows 7ではのフィルタリングされたアクセストークンと、 グループのメンバーのフル管理者アクセストークン との間でネットワーク接続が共有されます。このレジストリ値を構成した後、LSAは、ネットワークリソースがアクセストークンにマップされている場合、 現在のユーザー セッションに関連付けられている別のアクセストークンがあるかどうかをチェックします。リンクされたアクセストークンがあるとLSA が判断すると、ネットワーク の共有がリンク先に追加されます。EnableLinkedConnectionsに レジストリ値を設定するには

  1. スタート、スタートプログラムとファイルボックスにregeditと入力をクリックし、 を入力し、Enterキーを押します。

  2. レジストリサブキーHKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ Systemを探して右クリックします。

  3. [新規作成]をポイントし、[DWORD値]をクリックします。

  4. EnableLinkedConnectionsと入力し、Enterキーを押します。

  5. [EnableLinkedConnections]を右クリックし、[変更]をクリックします。

  6. [値のデータ]ボックスに「1」と入力し、[OK]をクリックします。

  7. レジストリエディタを終了し、コンピュータを再起動します。

+0

これは私のために、特にユニバーサルUSBインストーラhttp://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3のために働いた。 –

0

(でも、レジストリに上記の修正)あなたは、このいずれかを考え出したが、私にとって、それはのchdirコマンドだったかどうかを知りません。

私は自分のコード

ChDir "P:\Temp\VidCap\Cam1\" 'I almost never use ChDir Open "list.txt" For Output As #1

に持っていたし、すべてのVB6作り付けのファイルコマンドが見えたストレート任意の操作、エラーなし、ノー何もないけれども。明示的にパスを指定することで解決しました。文字列にはコードがありますが、明示的に指定することもできます。

期待どおりです。

希望これは、Windows XP SP3モードで実行するように設定するにはどうすればよい

H

関連する問題