OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

WNetAddConnection2で困っています

  • すぐに回答を!
  • 質問No.118009
  • 閲覧数1624
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 85% (107/125)

お世話になります。
VC6.0のサービス内でのネットワーク接続関数:WNetAddConnection2で困っています。

パラメータ
NETRESOURCE nr;の

// ローカルドライブ名
nr.lpLocalName = "";

// 共有フォルダ名
nr.lpRemoteName = "\\\\saver\\c$";
がエラーになります

「2 番目の引数を 'char [6]' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照)指示された型は関連がありません; 変換にはreinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。」


(unsign short *)のセット方法は下記のように直したのですが





// 資源の種類
nr.dwType = RESOURCETYPE_DISK;

// ローカルドライブ名
nr.lpLocalName = (unsigned short*)"";

// 共有フォルダ名
nr.lpRemoteName = (unsigned short*)"\\\\saver\\c$";

// プロバイダー名
nr.lpProvider = NULL;


・・・
dwret = WNetAddConnection2( &nr,(const unsigned short *)"passdw",(const unsigned short *)"userid",0);

コンパイルはとおったのですが
接続できません

(unsign short *)のセット方法が悪いのか
サービスでなければうまく動くのですが・・・。

サービスなのでデバックもよくできません
アドバイス、回答、お願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル8

ベストアンサー率 51% (21/41)

nr.lpLocalName = L"";
nr.lpRemoteName = L"\\\\saver\\c$";
nr.lpProvider = NULL;
dwret = WNetAddConnection2( &nr,L"passdw",L"userid",0);
では?

ASCII(char*)型にするなら

方法1
#define UNICODE
#define _UNICODE
を検索してコメントにする。

方法2
NETRESOURCEA構造体と
WNetAddConnection2A関数を使う
お礼コメント
phoo

お礼率 85% (107/125)

回答、ありがとうございます。
投稿日時 - 2001-08-15 15:32:29
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル8

ベストアンサー率 65% (17/26)

# あてずっぽうですが... サービスというのはNTとかWindows2000のサービスのことでしょうか. サービスを動かすアカウントの権限と普通のコマンドを動かすアカウントの権限が違っているため,接続ができないのかもしれません. サービスを動かすアカウントをコマンドを動かしているアカウントに変更してみたらうまく動いたりしませんかね. ...続きを読む
# あてずっぽうですが...

サービスというのはNTとかWindows2000のサービスのことでしょうか.

サービスを動かすアカウントの権限と普通のコマンドを動かすアカウントの権限が違っているため,接続ができないのかもしれません.

サービスを動かすアカウントをコマンドを動かしているアカウントに変更してみたらうまく動いたりしませんかね.
お礼コメント
phoo

お礼率 85% (107/125)

早々の回答ありがとうございました。
投稿日時 - 2001-08-15 15:27:37
  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

Windows 系はあまりプログラムを組まないので良く分かりませんが、Unicode を 使っているから、じゃないですか? > nr.lpRemoteName = "\\\\saver\\c$"; nr.lpRemoteName = _T("\\\\saver\\c$"); って感じではいかが? ちなみに、「型が違うよ」と言ってい ...続きを読む
Windows 系はあまりプログラムを組まないので良く分かりませんが、Unicode を
使っているから、じゃないですか?

> nr.lpRemoteName = "\\\\saver\\c$";

nr.lpRemoteName = _T("\\\\saver\\c$");

って感じではいかが?


ちなみに、「型が違うよ」と言っているエラーに対して、理由も分からずキャスト
をしても問題の解決になることは、ほとんどありませんよ。
お礼コメント
phoo

お礼率 85% (107/125)

回答ありがとうございます。
投稿日時 - 2001-08-15 15:30:04
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ