Я сделал приложение и dll, которые работают так: мне нужно зарегистрировать dll. После регистрации dll, если я щелкну правой кнопкой мыши файл .exe, появится всплывающее меню, и я вставил в это меню одну строку («Запустить MyApp»), и если я щелкну там, он должен запустить MyApp. MyApp имеет один параметр, который представляет собой полный путь к выбранному файлу .exe. После запуска MyApp с этим путем он должен создать процесс с CreateProcessWithLogonW(). Это приложение считывает имя пользователя, пароль и домен из файла .ini. Моя проблема в том, что после запуска MyApp всегда происходит сбой, потому что он не может найти файл ini. Код ошибки: 1 (неверная функция). Если я запускаю MyApp вручную, он работает нормально.
Кто-нибудь знает, почему это так, и как я могу решить эту проблему?
Заранее спасибо!
кампи
Обновление1:
Вот код, который читает из ini-файла.
int main ( int argc, char *argv[] )
{
int i, slash = 0, j;
char application[size];
wchar_t wuser[65], wdomain[33], wpass[129];
memset( user, 0, sizeof ( user ) );
memset( password, 0, sizeof ( password ) );
memset( domain, 0, sizeof ( domain ) );
file_exists( "RunAs.ini" );
readfile( "RunAs.ini" );
....
....
....
}
void file_exists( const char * filename )
{
if (FILE * file = fopen(filename, "r"))
{
fclose(file);
}
else
{
printf("\nCan't find %s!\n",filename);
getch();
exit(1);
}
}//file_exists
void readfile( char * filename )
{
FILE *inifile;
char tmp[256], buf[256], what[128];
int i, j;
inifile = fopen( "RunAs.ini", "r" );
while ( fgets(tmp, sizeof tmp, inifile) != NULL )
{
if ( tmp[ strlen(tmp) - 1 ] == '\n' )
{
tmp[ strlen(tmp) - 1 ] = '\0';
}//if
memset ( buf, 0, sizeof( buf ) );
for ( i = 0; tmp[i]!= '='; i++ )
{
buf[i] = tmp[i];
}
buf[i] = '\0';
i++;
// memset ( what, 0, sizeof( what ) );
SecureZeroMemory( what, sizeof(what) * 128 );
for ( j = 0; i != strlen(tmp); i++ )
{
what[j] = tmp[i];
j++;
}
what[j] = '\0';
upcase( buf );
removespace( what );
if ( strcmp( buf, "USERNAME" ) == 0 )
{
strcpy( user, what );
}
if ( strcmp( buf, "PASSWORD" ) == 0 )
{
strcpy( password, what );
}
if ( strcmp( buf, "DOMAIN" ) == 0 )
{
strcpy( domain, what );
}
}//while
fclose (inifile);
}//readfile